sed
는 Linux에서 강력한 스트림 편집기(스트림 에디터)로, 텍스트를 대량으로 처리하고 편집하는 데 매우 유용합니다. sed
를 사용하면 파일의 내용을 변경하거나 텍스트 스트림에서 데이터를 수정할 수 있습니다. sed
는 주로 명령줄에서 사용되며, 정규 표현식과 결합하여 복잡한 텍스트 변환 작업을 수행할 수 있습니다.
sed
의 기본 사용법
sed
명령은 일반적으로 다음 형식으로 사용됩니다:
sed [옵션] '명령' [파일]
[옵션]
:sed
명령에 대한 다양한 옵션입니다.'명령'
: 수행할 작업을 정의하는sed
명령입니다.[파일]
: 입력 파일입니다. 파일을 지정하지 않으면sed
는 표준 입력(STDIN)을 사용합니다.
주요 옵션
-e
: 여러 명령을 사용할 때 사용합니다.-i
: 파일을 직접 수정할 때 사용합니다.-i.bak
형식으로 백업 파일을 만들 수 있습니다.-n
: 출력을 억제합니다.p
명령과 함께 사용할 때 유용합니다.-r
: 확장 정규 표현식을 사용합니다.
주요 명령어
s
: 대체(substitute)d
: 삭제(delete)p
: 출력(print)a
: 추가(append)i
: 삽입(insert)c
: 치환(change)y
: 문자 변환(translate)
예제와 함께 살펴보는 sed
명령어
1. 텍스트 대체
텍스트 파일에서 특정 문자열을 다른 문자열로 대체할 수 있습니다.
sed 's/old_text/new_text/' file.txt
s/old_text/new_text/
:old_text
를new_text
로 대체합니다.file.txt
: 입력 파일입니다.
예: file.txt
에서 모든 hello
를 world
로 대체합니다.
sed 's/hello/world/' file.txt
대체할 문자열이 여러 번 등장하는 경우, 모든 발생을 대체하려면 g
플래그를 추가합니다.
sed 's/hello/world/g' file.txt
2. 파일을 직접 수정
파일을 직접 수정하려면 -i
옵션을 사용합니다.
sed -i 's/old_text/new_text/' file.txt
백업 파일을 생성하면서 파일을 수정하려면:
sed -i.bak 's/old_text/new_text/' file.txt
3. 특정 줄에서 텍스트 대체
특정 줄에서만 대체를 수행할 수 있습니다.
sed '3s/old_text/new_text/' file.txt
위 명령은 file.txt
의 3번째 줄에서 old_text
를 new_text
로 대체합니다.
범위를 지정하여 여러 줄에서 대체할 수도 있습니다.
sed '2,4s/old_text/new_text/' file.txt
이는 2번째 줄부터 4번째 줄까지 old_text
를 new_text
로 대체합니다.
4. 줄 삭제
특정 줄을 삭제할 수 있습니다.
sed '3d' file.txt
이는 file.txt
의 3번째 줄을 삭제합니다.
범위를 지정하여 여러 줄을 삭제할 수도 있습니다.
sed '2,4d' file.txt
이는 2번째 줄부터 4번째 줄까지 삭제합니다.
특정 패턴과 일치하는 줄을 삭제하려면:
sed '/pattern/d' file.txt
이 명령은 file.txt
에서 pattern
과 일치하는 모든 줄을 삭제합니다.
5. 줄 출력
-n
옵션과 p
명령을 사용하여 특정 줄만 출력할 수 있습니다.
sed -n '3p' file.txt
이 명령은 file.txt
의 3번째 줄만 출력합니다.
특정 패턴과 일치하는 줄을 출력하려면:
sed -n '/pattern/p' file.txt
이 명령은 pattern
과 일치하는 모든 줄을 출력합니다.
6. 텍스트 추가
특정 줄 이후에 텍스트를 추가할 수 있습니다.
sed '3a\new line of text' file.txt
이 명령은 file.txt
의 3번째 줄 이후에 new line of text
를 추가합니다.
특정 줄 이전에 텍스트를 삽입하려면:
sed '3i\new line of text' file.txt
이 명령은 file.txt
의 3번째 줄 이전에 new line of text
를 삽입합니다.
7. 텍스트 치환
특정 줄을 다른 텍스트로 치환할 수 있습니다.
sed '3c\replacement text' file.txt
이 명령은 file.txt
의 3번째 줄을 replacement text
로 치환합니다.
8. 여러 명령 사용
여러 sed
명령을 한 번에 사용할 수 있습니다. -e
옵션을 사용하거나 세미콜론(;
)으로 명령을 구분합니다.
sed -e 's/hello/world/' -e 's/foo/bar/' file.txt
또는
sed 's/hello/world/; s/foo/bar/' file.txt
9. 문자 변환
y
명령을 사용하여 한 문자 집합을 다른 문자 집합으로 변환할 수 있습니다.
sed 'y/abc/xyz/' file.txt
이 명령은 file.txt
에서 a
를 x
로, b
를 y
로, c
를 z
로 변환합니다.
실전 예제
예제 1: 텍스트 파일에서 이메일 주소 추출
텍스트 파일에서 이메일 주소를 추출하고 싶다면:
sed -n 's/.*\(.*@.*\..*\).*/\1/p' file.txt
이 명령은 파일에서 이메일 주소만 추출하여 출력합니다.
예제 2: 특정 패턴이 있는 줄 이후에 텍스트 추가
패턴 "START"가 있는 줄 이후에 "New line"을 추가하려면:
sed '/START/a\New line' file.txt
요약
sed
는 텍스트 변환 및 편집을 자동화하는 데 매우 유용한 도구입니다. sed
의 강력한 기능을 활용하면 파일에서 대량의 데이터를 효율적으로 처리할 수 있습니다. 다양한 옵션과 명령어를 조합하여 복잡한 텍스트 처리 작업을 간단하게 수행할 수 있습니다. sed
명령어를 사용하여 텍스트를 다룰 때, 위에서 설명한 예제들을 실습해보는 것이 좋습니다.
'Linux Unix > Command' 카테고리의 다른 글
[ Linux ] 버전 보는 방법 (0) | 2024.06.20 |
---|---|
[ Linux ] 시스템의 Buffer Cache 비우기 (0) | 2022.09.20 |
[ Linux ] sed - 여러 파일 내 특정 문자열 교체 하기 (0) | 2021.08.03 |
[ Linux ] SSH Server 설치하기 - 간단 (0) | 2019.09.08 |
[ Linux ] tar, gzip - 파일 압축하고 압축풀기 (0) | 2018.06.03 |