고전 치환 도구
sed 가 "stream editor" 의미. 빵과 버터가 sed 's/pattern/replacement/flags' — 입력 각 줄에 정규식 치환 적용.
기본 문법
sed 's/pattern/replacement/g' file.txt
sed -E 's/pattern/replacement/g' file.txt # ERE 문법 (권장)
echo 'hello' | sed 's/h/H/' # piped 입력
흔한 플래그:
g— 각 줄 다 치환 (기본은 줄당 첫 번째)i— case-insensitive (GNU sed)2,3... — 줄당 N번째 등장만 치환
BSD vs GNU sed
macOS 가 BSD sed; Linux 가 GNU sed. 중요한 차이:
-iin-place 편집: BSD 가 extension 인자 필수 (빈 거라도:sed -i '' 's/old/new/' file). GNU 는 그냥sed -i 's/old/new/' file.- Extended regex: BSD 가
-E사용, GNU 도-r받음.-E가 둘 다 동작 — 그거 사용. - 백슬래시 해석: 치환에서
\n,\t처리에 미묘한 차이.
크로스 플랫폼 스크립트엔 gsed (GNU sed, brew install gnu-sed) 또는 Python.
캡처 그룹
sed BRE (기본) 에서 그룹이 백슬래시 escape 필요: \(...\). ERE 위한 -E 면 그냥 괄호.
치환에서 \1, \2 로 캡처 참조.