리눅스 sed 명령어 완벽 가이드: 텍스트 처리를 자동화하는 스트림 에디터
리눅스나 유닉스 환경에서 대량의 로그 파일을 수정하거나, 설정 파일 내의 특정 문자열을 일괄 변경해야 할 때 여러분은 어떤 도구를 사용하시나요? 마우스로 일일이 드래그하여 수정하는 것은 불가능에 가깝습니다. 이때 구원투수로 등장하는 것이 바로 sed(Stream Editor)입니다. sed는 파일을 직접 열지 않고도 명령행에서 텍스트를 추출, 치환, 삭제할 수 있는 강력한 도구로, 서버 자동화 스크립트의 핵심 요소입니다.
1. sed 명령어란 무엇인가?
sed는 'Stream Editor'의 약자로, 텍스트 스트림을 입력받아 지정된 규칙에 따라 편집한 후 결과를 출력합니다.
원본 파일을 직접 수정하기보다는 표준 출력(Standard Output)으로 결과를 보여주는 것이 기본 동작 방식이기에 안전한 테스트가 가능하며,
-i 옵션을 통해 원본 파일에 직접 변경 사항을 적용할 수도 있습니다.
2. 주요 옵션 및 동작 방식 비교
sed를 제대로 활용하기 위해서는 상황에 맞는 옵션 선택이 필수적입니다. 가장 자주 사용되는 옵션들을 정리해 드립니다.
| 옵션 | 설명 | 활용 시나리오 |
|---|---|---|
| -e | 다중 편집 명령을 실행할 때 사용 | 한 번의 실행으로 치환과 삭제를 동시 진행 |
| -f | 스크립트 파일에 저장된 명령을 실행 | 복잡한 정규표현식 규칙을 재사용할 때 |
| -i | 원본 파일을 직접 수정 (In-place) | 설정 파일의 특정 값을 영구적으로 변경할 때 |
| -n | 자동 출력을 억제 (p 명령과 함께 사용) | 특정 행만 골라서 화면에 출력하고 싶을 때 |
3. 실무 활용 빈도가 높은 sed 명령어 예제
① 문자열 치환 (Substitution)
sed 's/old/new/' file.txt: 각 행의 첫 번째 'old'를 'new'로 치환
sed 's/old/new/g' file.txt: 행 전체(global)의 모든 'old'를 'new'로 치환
② 특정 행 삭제 (Delete)
sed '3d' file.txt: 3번째 행을 삭제
sed '/pattern/d' file.txt: 'pattern'이 포함된 모든 행을 삭제
③ 텍스트 추가 및 삽입 (Append/Insert)
sed '1i Hello' file.txt: 1행 앞(insert)에 'Hello' 추가
sed '$a End of File' file.txt: 마지막 행($) 뒤(append)에 문구 추가
| 명령어 구분 | 단축키 | 주요 기능 |
|---|---|---|
| 치환 | s | 패턴을 찾아 다른 문자로 교체 |
| 삭제 | d | 특정 행이나 패턴이 포함된 행 제거 |
| 출력 | p | 패턴 스페이스의 내용을 출력 (-n과 조합) |
| 추가 | a / i | 현재 행 다음(a) 혹은 이전(i)에 텍스트 삽입 |