notes
Shell - SED
Shell sed 명령어의 검색·치환 문법과 실무 사용 예 메모.
sed (Stream Editor)는 텍스트 파일을 처리하는 강력한 유닉스/리눅스 명령어입니다. 주요 개념과 사용법을 설명해드리겠습니다:
- 기본 문법:
sed [옵션] '명령어' 파일명
- 주요 옵션:
-i # 파일을 직접 수정 (in-place)
-n # 자동 출력 억제
-e # 여러 명령어 실행
-f # 스크립트 파일에서 명령어 읽기
- 자주 사용되는 명령어:
# 치환 (가장 많이 사용)
sed 's/찾을문자열/바꿀문자열/' 파일명
# 예시
sed 's/hello/world/' test.txt # hello를 world로 변경
# 특정 줄만 수정
sed '5s/hello/world/' test.txt # 5번째 줄만 수정
# 모든 줄 수정
sed 's/hello/world/g' test.txt # g 옵션으로 모든 매칭 변경
- 실제 사용 예시:
# Nginx 설정 파일에서 포트 주석 처리
sed -i 's/^server 127.0.0.1:13003;/#server 127.0.0.1:13003;/' nginx.conf
# 여러 줄 수정
sed -i 's/old/new/g' file.txt
# 특정 패턴 이후 줄 삭제
sed '/pattern/,$d' file.txt
- 정규식 사용:
# 공백으로 시작하는 줄 수정
sed 's/^\\s*server/#server/' nginx.conf
# 특정 포트 번호만 수정
sed 's/:13003;/:13004;/' nginx.conf
- 여러 명령어 조합:
# 여러 변경사항 적용
sed -i -e 's/old1/new1/g' -e 's/old2/new2/g' file.txt
- 백업 생성:
# 수정 전 백업 생성
sed -i.bak 's/old/new/g' file.txt
- 실제 Nginx 설정 수정 예시:
# 포트 주석 처리
sed -i 's/^\\s*server 127.0.0.1:13003;/#server 127.0.0.1:13003;/' nginx.conf
# 포트 주석 해제
sed -i 's/^#server 127.0.0.1:13003;/server 127.0.0.1:13003;/' nginx.conf
- 주의사항:
i옵션은 파일을 직접 수정하므로 주의 필요- 백업을 만들어두는 것이 안전
- 정규식 사용 시 특수문자 이스케이프 필요
- 권한 문제 발생 가능 (sudo 필요할 수 있음)
- 디버깅:
# 변경사항 미리보기
sed 's/old/new/g' file.txt
# 실제 변경
sed -i 's/old/new/g' file.txt
이러한 sed 명령어는 특히 설정 파일 수정이나 로그 처리에 매우 유용합니다. 특히 Nginx 설정 파일 수정과 같은 시스템 관리 작업에서 자주 사용됩니다.