Linux / 명령어 / sed - 스트림에서 텍스트 검색·치환
sed는 입력을 한 행씩 읽고 편집 규칙을 적용해 결과를 출력하는 스트림 편집기입니다. 치환, 특정 행 선택, 삭제처럼 반복적인 텍스트 변환에 적합합니다.
sed 명령어란?
기본 실행은 원본을 수정하지 않고 변환 결과를 표준 출력으로 내보냅니다. 치환 명령의 형태는 s/찾을패턴/바꿀내용/플래그이며 g를 붙이면 한 행의 모든 일치를 바꿉니다.
기본 문법
sed [옵션] '편집명령' [파일 ...]
설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man sed으로 현재 시스템의 설명을 확인하세요.
사용 예제
첫 일치 치환
각 행에서 처음 일치하는 부분만 바꿉니다.
sed 's/old/new/' config.txt
한 행의 모든 일치 치환
g 플래그를 사용합니다.
sed 's/old/new/g' config.txt
특정 행만 출력
-n으로 자동 출력을 끄고 p로 범위를 출력합니다.
sed -n '5,10p' log.txt
치환 결과와 파일 변경 여부
기본 sed는 입력을 읽어 변환한 결과를 표준 출력으로 보내며 원본 파일을 바꾸지 않습니다. 아래 치환은 각 행의 첫 번째 red만 green으로 바꿉니다.
printf 'red car\nred red\n' | sed 's/red/green/'
예시 출력:
green car green red
한 행의 모든 일치를 바꾸려면 치환식 끝에 g를 붙입니다. 파일을 직접 수정하는 -i는 구현마다 백업 접미사 문법이 다르므로, 중요한 파일은 먼저 백업하고 sed '...' 원본 > 새파일로 결과를 검토한 뒤 교체하세요.
특정 행만 출력하려면 sed -n '5,10p' 파일처럼 기본 출력 억제(-n)와 출력 명령(p)을 함께 사용합니다. sed의 정규식은 셸 글로브와 다르며, 큰따옴표 안에서는 셸이 $나 백슬래시를 먼저 해석할 수 있습니다. 치환식을 작성할 때 따옴표와 구분자도 확인하세요.
주요 옵션과 형식
| 옵션·형식 | 설명 |
|---|---|
-n |
기본 자동 출력을 끕니다. |
-e 스크립트 |
편집 명령을 여러 개 지정합니다. |
-E |
확장 정규 표현식을 사용합니다. |
-i[접미사] |
GNU 구현에서 파일을 제자리 편집하고 선택적으로 백업합니다. |
사용할 때 주의할 점
sed -i는 파일을 실제로 바꾸므로 중요한 파일에는 백업 접미사를 사용하고 결과를 검토하세요. GNU와 BSD의 -i 문법이 다릅니다. 셸 인용부호와 정규 표현식의 특수문자도 함께 고려해야 합니다.
자주 묻는 질문
sed만 실행하면 원본 파일이 바뀌나요?
아니요. 기본은 변경된 결과를 출력합니다. -i를 사용하거나 결과를 별도 파일에 저장해야 파일이 바뀝니다.
공식 문서
옵션의 정확한 동작과 구현별 차이는 sed 관련 공식 문서에서 확인할 수 있습니다.









