sed는 줄 단위 치환에 강해
기본 형태는 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/' # 파이프 입력
g를 붙이면 한 줄의 모든 매칭을 바꾸고, 붙이지 않으면 첫 매칭만 바꿔. 숫자 2나 3을 쓰면 그 줄의 둘째나 셋째 매칭만 고를 수 있어. GNU sed의 i는 대소문자를 무시하는 확장이야.
macOS와 Linux의 sed는 같은 명령도 조금 다르게 받아
- 제자리 편집: BSD sed는
sed -i '' 's/old/new/' file처럼 백업 확장자 인수를 요구해. GNU sed는sed -i 's/old/new/' file로 쓸 수 있어. - 확장 정규식: 두 환경에서 함께 쓸 스크립트라면
-E를 사용해. - 치환 문자열:
\n이나\t같은 백슬래시 해석은 구현에 따라 차이가 날 수 있어.
여러 운영체제에서 같은 결과가 꼭 필요하다면 해당 환경에서 명령을 시험하거나 Python 같은 한 구현으로 통일해.
캡처한 값을 치환 문자열에서 재사용해
기본 BRE에서는 그룹 괄호를 \(...\)처럼 이스케이프해야 하고, -E에서는 평범한 괄호를 사용해. 치환 쪽의 \1, \2가 첫째와 둘째 캡처 값을 가리켜.