sed(stream editor)는 「스트림(파이프·파일)을 거쳐 가며 편집」하는 도구.
가장 흔한 용도는 「치환」이지만 줄 추가·삭제·복잡한 변형까지 가능.
awk와 함께 텍스트 처리의 양대 강자.
치환 — 가장 흔함.
sed 's/old/new/' file — 매 줄 첫 매치만.
sed 's/old/new/g' file — 매 줄 모든 매치(g = global).
sed -i 's/foo/bar/g' file — in-place(파일 직접 수정).
백업은 sed -i.bak로 .bak 파일 생성.
정규식.
sed 's/[0-9]\+/NUM/g' — 숫자를 NUM으로.
sed -E로 확장 정규식 — 백슬래시 줄어 가독성 좋음.
sed -E 's/([0-9]+)-([0-9]+)/\2-\1/' — 그룹 캡처와 참조.
줄 단위 처리.
sed -n '5,10p' file — 5~10번째 줄만 출력(-n 기본 출력 끄기, p print).
sed '5,10d' — 5~10번째 줄 삭제.
sed '/pattern/d' — 매치되는 줄 삭제.
여러 명령.
sed -e 's/a/b/g' -e 's/c/d/g' file — -e로 여러 명령 연결.
또는 한 줄에 sed 's/a/b/g; s/c/d/g'.
복잡한 변형은 스크립트 파일로 sed -f script.sed file.
한 줄 요약
sed는 스트림 에디터, 치환(s/old/new/g)이 가장 흔함.
-i in-place 수정, -E 확장 정규식, -n + p로 줄 단위 출력.
여러 명령은 -e 또는 ; 연결.
더 알아볼 것
- sed 정규식 가이드
- GNU sed vs BSD sed (Mac)
- gawk·sed로 못 하는 건 perl·python