> 텍스트 처리 및 검색 > sed

sed: 스트림 에디터로 텍스트 변환

sed(stream editor)는 텍스트 스트림을 필터링하고 변환하는 강력한 명령줄 유틸리티입니다. 파일이나 파이프를 통해 전달된 텍스트에 대해 정규 표현식을 사용하여 다양한 편집 작업을 수행할 수 있습니다. 특히 `-e` 옵션을 사용하면 여러 개의 편집 명령을 순차적으로 적용할 수 있어 복잡한 텍스트 처리 작업에 유용합니다.

개요

sed는 입력 스트림(파일 또는 표준 입력)에서 텍스트를 읽어 편집 명령을 적용한 후 결과를 표준 출력으로 내보내는 비대화형 텍스트 편집기입니다. 주로 텍스트 파일에서 특정 패턴을 찾아 바꾸거나, 줄을 삭제하거나, 삽입하는 등의 작업을 자동화하는 데 사용됩니다. `-e` 옵션은 여러 개의 `sed` 명령을 한 번에 실행할 수 있도록 하여 스크립트 파일을 작성하지 않고도 복잡한 작업을 수행할 수 있게 합니다.

주요 기능

  • 정규 표현식을 이용한 강력한 패턴 매칭 및 치환
  • 파일 내용의 선택적 삭제, 삽입, 변경
  • 여러 편집 명령을 한 번에 적용 가능 (`-e` 옵션)
  • 비파괴적 편집 (기본적으로 원본 파일 변경 없음)

주요 옵션

sed 명령어의 핵심 기능을 제어하는 주요 옵션들입니다.

스크립트/명령 지정

출력/처리 방식

생성된 명령어:

명령어를 조합해 보세요.

설명:

`sed` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

sed 명령어와 `-e` 옵션을 활용한 실제 사용 예시입니다.

단일 명령으로 텍스트 치환

echo "I like apple." | sed -e 's/apple/orange/'

파일 내의 'apple'을 'orange'로 치환합니다.

여러 개의 -e 옵션으로 다중 명령 실행

echo "I like apple." | sed -e 's/apple/orange/' -e 's/like/love/'

한 줄에서 'apple'을 'orange'로 바꾸고, 'like'를 'love'로 바꿉니다.

세미콜론으로 여러 명령 구분

echo "I like apple." | sed -e 's/apple/orange/; s/like/love/'

위와 동일한 작업을 세미콜론으로 구분하여 수행합니다.

특정 줄 삭제 및 치환

cat <<EOF > test.txt
Log entry 1: info
Log entry 2: warning
Log entry 3: error
Log entry 4: debug
EOF
sed -e '/error/d' -e 's/warning/notice/' test.txt
rm test.txt

파일에서 'error'가 포함된 줄을 삭제하고, 'warning'을 'notice'로 치환합니다.

파일 내 직접 편집 (-i 옵션)

echo "This is old_text." > my_file.txt
sed -i.bak -e 's/old_text/new_text/' my_file.txt
cat my_file.txt
cat my_file.txt.bak
rm my_file.txt my_file.txt.bak

원본 파일의 'old_text'를 'new_text'로 직접 변경하고, 백업 파일을 생성합니다.

특정 패턴이 있는 줄만 출력 (-n 및 p 명령)

echo -e "banana\napple\norange" | sed -n -e '/apple/p'

'apple'이 포함된 줄만 출력합니다.

팁 & 주의사항

sed 사용 시 유용한 팁과 주의해야 할 점들입니다.

정규 표현식 활용

  • sed는 강력한 정규 표현식(Regular Expression)을 지원합니다. 복잡한 패턴 매칭 및 치환을 위해 정규 표현식 문법을 숙지하는 것이 중요합니다.
  • 기본적으로 BRE(Basic Regular Expression)를 사용하지만, `-r` (또는 `--regexp-extended`) 옵션을 사용하면 ERE(Extended Regular Expression)를 사용할 수 있어 더 편리합니다.

따옴표 사용

  • sed 명령은 셸에 의해 해석될 수 있으므로, 특수 문자가 포함된 스크립트는 작은따옴표('...')로 묶어 셸의 확장을 방지하는 것이 좋습니다. 변수를 사용해야 하는 경우 큰따옴표("...")를 사용하되, 내부의 특수 문자는 백슬래시로 이스케이프해야 합니다.

백업의 중요성 (-i 옵션 사용 시)

  • `-i` 옵션으로 파일을 직접 편집할 때는 항상 백업본을 생성하는 습관을 들이세요 (예: `sed -i.bak 's/old/new/' file.txt`). 예기치 않은 결과로 원본 파일이 손상되는 것을 방지할 수 있습니다.

테스트 먼저

  • 복잡한 sed 스크립트를 실제 파일에 적용하기 전에, 작은 테스트 파일이나 `echo` 명령을 통해 결과를 미리 확인하는 것이 좋습니다.

동일 카테고리 명령어