sed (Stream Editor)는 Linux 및 Unix에서 텍스트 파일을 편집하고 변환하는 데 사용되는 강력한 명령 줄 도구입니다. sed는 스트림(텍스트 입력)을 읽고 각 줄에 대해 특정 패턴을 찾아 다른 패턴으로 변경하거나 텍스트를 삭제하거나 추가할 수 있습니다.
sed 명령어는 다음과 같은 형식으로 사용됩니다.
sed [옵션] '스크립트' [입력 파일]
여기서, "스크립트"는 sed가 수행할 작업을 지정하는 명령어의 집합입니다. 이러한 명령어는 다음과 같은 형식을 따릅니다.
[주소]동작[인수]
- 주소 : 명령어가 적용될 줄의 범위를 지정합니다. 예를 들어, 1,10은 1번째 줄부터 10번째 줄까지 적용됩니다. 주소를 지정하지 않으면 모든 줄에 적용됩니다.
- 동작 : 수행할 작업을 지정합니다. 예를 들어, s는 문자열 치환 작업을 수행합니다.
- 인수 : 동작에 필요한 추가 인수를 지정합니다. 예를 들어, s/foo/bar/g는 "foo"를 "bar"로 전역 치환합니다.
일반적인 sed 명령어 사용 사례는 다음과 같습니다.
- 파일에서 텍스트 치환하기 : sed 's/찾을_문자열/바꿀_문자열/g' 파일명 명령을 사용하여 파일에서 문자열을 검색하고 치환할 수 있습니다.
- 파일에서 특정 줄 삭제하기 : sed '삭제할_줄번호 d' 파일명 명령을 사용하여 파일에서 특정 줄을 삭제할 수 있습니다.
- 파일에 텍스트 추가하기 : sed '$a 추가할_텍스트' 파일명 명령을 사용하여 파일 끝에 텍스트를 추가할 수 있습니다.
- 파일에서 특정 패턴을 가진 라인 삭제하기 : sed '/특정_패턴/d' 파일명 명령을 사용하여 파일에서 특정 패턴을 가진 라인을 삭제할 수 있습니다.
- 파일에서 특정 줄 번호의 범위에 있는 라인 삭제하기 : sed '시작_줄번호,끝_줄번호d' 파일명 명령을 사용하여 파일에서 특정 줄 번호의 범위에 있는 라인을 삭제할 수 있습니다.
________________________________________________________________________________________________
sed 옵션
sed 명령어는 여러 옵션을 제공합니다. 일부 주요 옵션은 다음과 같습니다.
- -n: 출력을 억제하고 스크립트에서 직접 출력 제어
- -e: 스크립트 명령어를 지정
- -f: 스크립트 파일을 지정
- -i: 원본 파일을 직접 변경
- -r: 확장 정규식 사용
- -s: 대체된 결과를 출력하지 않음
- -u: 유닉스 줄바꿈 문자 사용
- -z: 널 문자를 입력 레코드 구분자로 사용
이외에도 다양한 옵션이 있습니다. 예를 들어, sed 명령어를 사용할 때 -n 옵션을 함께 사용하면, sed 명령어가 파일의 내용을 읽고 스크립트에 따라 텍스트를 처리하지만, 출력하지는 않습니다. 따라서 스크립트에 p 명령어를 사용하여 처리된 결과를 출력할 수 있습니다.
또한, sed 명령어를 사용할 때 -i 옵션을 함께 사용하면, 원본 파일을 직접 변경할 수 있습니다. 이 경우, sed 명령어는 파일의 내용을 변경하고, 변경된 내용을 새로운 파일로 저장하지 않습니다. 따라서 이 옵션을 사용할 때는 주의해야 합니다.
예를 들어, 다음과 같은 명령어를 사용하면, "file.txt" 파일에서 "old_string"을 "new_string"으로 변경할 수 있습니다.
$ sed -i 's/old_string/new_string/g' file.txt
________________________________________________________________________________________________
[example]
sed 명령어를 사용한 몇 가지 예제를 제공합니다.
여기서는 sed 명령어를 사용한 몇 가지 예제를 제공합니다.
파일에서 문자열 치환하기
$ sed 's/old_string/new_string/g' file.txt
위의 명령은 file.txt 파일에서 "old_string"을 "new_string"으로 전역 치환합니다.
파일에서 특정 패턴을 가진 라인 삭제하기
$ sed '/pattern/d' file.txt
위의 명령은 file.txt 파일에서 "pattern"을 포함하는 모든 라인을 삭제합니다.
파일에서 특정 줄 삭제하기
$ sed '3d' file.txt
위의 명령은 file.txt 파일에서 세 번째 줄을 삭제합니다.
파일에 텍스트 추가하기
$ sed '$a added_text' file.txt
위의 명령은 file.txt 파일의 끝에 "added_text"를 추가합니다.
파일에서 특정 패턴을 가진 라인을 다른 텍스트로 대체하기
$ sed 's/pattern/replacement/g' file.txt
위의 명령은 file.txt 파일에서 "pattern"을 찾아 "replacement"로 대체합니다.
파일에서 특정 패턴을 가진 라인 이후의 모든 텍스트 삭제하기
$ sed '/pattern/,$d' file.txt
위의 명령은 file.txt 파일에서 "pattern"을 포함하는 라인 이후의 모든 텍스트를 삭제합니다.
파일에서 특정 줄 번호 범위에 있는 라인 삭제하기
$ sed '2,5d' file.txt
위의 명령은 file.txt 파일에서 두 번째 줄부터 다섯 번째 줄까지의 모든 라인을 삭제합니다.
'linux' 카테고리의 다른 글
[Linux] top 명령어로 서버의 상태 파악하기 (0) | 2023.06.15 |
---|---|
grep 자주 쓰는 옵션 (0) | 2023.05.05 |
[Ubuntu] 포트 정보 조회 (0) | 2023.04.24 |
Ubuntu 에 자바 SDK 설치 (0) | 2022.04.28 |