sed는 stream editor for filtering and transforming text로 text 스트림 편집기를 의미합니다.
주로 문자열을 치환하거나 삭제할 때 유용하게 사용할 수 있는 명령어 입니다.
filtering에서 볼 수 있듯이 특정 라인까지 출력, 특정 패턴에 맞는 행들만 출력하는 기능을 지원합니다.
그렇다면 sed 명령어를 어떻게 사용하는 사용법과 예제를 살펴보겠습니다.
sed 명령어 기본 사용법
먼저 man sed를 하면 아래와 같이 나옵니다.
복잡하니 간단하게 사용법 먼저 봅니다.
sed의 기본 문자열 치환 사용법은 아래와 같습니다.
sed는 한 라인씩 읽어와서 처리를 수행합니다.
문자열 치환은 위와 같이 진행할 수 있다. 여기서 눈 여겨볼 부분은 s와 g인데,
s는 "치환을 하겠다(substitute)"는 부속명령이고 g는 "읽어온 전체 문자열을 대상으로 한다(global)"는 의미입니다.
sed 부속 명령
g가 없으면 sed 명령은 행에서 happy 단어의 첫 번째 발생만 대체합니다.
기본적으로 리눅스 명령어들은 대소문자를 구분합니다.
Happy 처럼 대문자가 포함된 문자열은 치환되지 않았는데, 이는 i 부속명령(subcommand)을 통해서 대소문자 구분없이 치환할 수 있습니다.
여기서 주의할 점은 원본 파일을 그대로 남아있다는 점입니다.
sed를 이용한 파일 단위 패턴 교체 처리
해당 출력을 새로운 파일로 저장해 보도록 하겠습니다.
아래 예제는 패턴을 치환 하여 새로운 파일로 저장하는 예제 입니다.
그렇다면 원본을 수정하고 싶으면 어떻게 할까요? 이때는 i 옵션을 통해서 수행할 수 있습니다. ( 원본 파일 수정 -i 옵션 )
sed로 내용 변경 시 백업 파일 만들기
man page를 보면 아래와 같이 설명이 되어있습니다.
즉, -i 옵션에 SUFFIX를 입력하면 백업 파일을 원본 파일의 뒤에 SUFFIX를 붙여서 자동으로 생성해 준다는 설명입니다.
SUFFIX에 abc를 붙여서 백업 파일을 생성해 보겠습니다.
이렇게 test.txt는 변경 되면서 test.txtabc라는 파일이 생겼습니다.
특정 라인 삭제하기
\n 개행문자를 포함하여 특정 라인을 삭제하려면 d 부속명령을 사용하여 /패턴/d 를 사용합니다.
더 자세히...
저는 당장 필요한 sed 명령어의 간단한 사용법을 알아 보고 정리해 보았습니다.
man page 해석하기도 오래 걸리고... 그래서 찾아보니 ibm에서 친절하게 한글 설명을 달아 놓았습니다.
물론 aix에서 사용하는 설명인데, linux도 동일할 것으로 생각되니 더 자세한 설명이 필요하신 분들은 아래 페이지에서 찾아 보실 수 있습니다.
ibm에서 aix sed 명령 설명해 놓은 것을 아래 링크로 가서 살펴 보시면 될 것 같습니다.
https://www.ibm.com/docs/ko/aix/7.2?topic=s-sed-command
오늘도 수고하셨습니다.
출처 : sed를 이용한 문자열 치환 및 파일 내용 바꾸기 : 네이버 블로그 (naver.com)
'IT > OracleLinux-1Z0460' 카테고리의 다른 글
Cent OS 7.x 계정에 sudo권한 부여하기 - [Linux] (0) | 2024.03.13 |
---|---|
[★유용★] SED-명령어-사용법(찾기, 치환, 삭제 등) (0) | 2024.03.11 |
우분투 리눅스에서 flatpak 으로 프로그램 설치 하는 방법 (0) | 2023.08.20 |
Linux command (0) | 2023.08.20 |
[CentOS 7/8] HTTPS 서비스를 위해 사설 SSL 인증서 생성하기 (0) | 2023.07.24 |