[linux] sed : stream editor

Leejaegun·2025년 10월 11일

linux

목록 보기
16/21

codex 나 기타 다른 coding agent들을 사용하다보면 sed -i ..하면서 하는게 나올건데, 알고 보니 엄청 많이 쓰는 명령어더라
sed -n '1,3p' :1~3 행만 출력해
뭐 이런식으로 그래서 간단하게 정말 자주쓰는 옵션만 설명해보려고 한다. -i, -n, -

(1) 정의

sedstream editor의 약자입니다.
즉, 텍스트 파일을 한 줄씩 스트림 형태로 읽어와, 지정된 패턴(정규표현식 등)에 따라 수정, 삭제, 치환을 수행합니다.
파일 전체를 메모리에 올리지 않고 처리하므로 빠르고 비파괴적(기본적으로 원본을 직접 수정하지 않음)입니다.


(2) 자주 쓰는 옵션 5가지

옵션의미특징 및 설명
-e여러 명령을 순차적으로 실행sed -e 's/foo/bar/' -e 's/bar/baz/' file 처럼 여러 치환을 연결
-i원본 파일을 직접 수정(in-place)예: sed -i 's/foo/bar/' file.txt → file.txt 내용이 직접 바뀜
-n자동 출력 억제출력은 p 명령을 써야만 함 (sed -n '2p' file → 2번째 줄만 출력)
-r 또는 -E확장 정규표현식 사용괄호, +, ? 등의 확장문법을 \ 없이 사용 가능
-f명령을 외부 스크립트 파일로부터 읽음예: sed -f script.sed file

(3) 예시 중심 설명

① 문자열 치환 (기본)

sed 's/foo/bar/' sample.txt

→ 각 줄에서 첫 번째 ‘foo’만 ‘bar’로 바꿈.
모든 ‘foo’를 바꾸려면 g 플래그 추가:

sed 's/foo/bar/g' sample.txt

② 특정 줄만 출력

sed -n '5p' sample.txt

→ 5번째 줄만 출력. (-n 옵션과 p 명령 조합)

③ 특정 패턴이 있는 줄만 출력

sed -n '/error/p' log.txt

→ ‘error’가 포함된 줄만 표시.

④ 파일 직접 수정 (-i)

sed -i 's/http:/https:/g' urls.txt

→ 파일 내 모든 http:https:로 직접 수정.

백업을 남기려면:

sed -i.bak 's/http:/https:/g' urls.txt

→ 원본은 urls.txt.bak로 저장.

⑤ 특정 범위 삭제

sed '2,5d' data.txt

→ 2~5번째 줄 삭제하고 결과 출력.


요약

  • sed = 스트림 기반 텍스트 편집기
  • 핵심 옵션: -i(in-place), -n(no auto print), -r/-E(regex), -e(multi-cmd), -f(script file)
  • 활용 예시: 치환, 삭제, 출력제한, 로그필터링, 설정파일 자동변경 등

sed는 정규표현식의 힘을 기반으로 한 "자동화된 텍스트 변환기"입니다.
쉘 스크립트에서 변수 치환이나 설정파일 패치 작업을 할 때 없어서는 안 될 도구죠.
한 번 익숙해지면 awk와 함께 UNIX 텍스트 처리의 양날검이 됩니다.

profile
Lee_AA

0개의 댓글