개요
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` 명령을 통해 결과를 미리 확인하는 것이 좋습니다.