리눅스 생활 하고파
[리눅스 명령어] sed 기초부터 옵션까지 한 번에 정리
하고집
2026. 1. 21. 03:47
반응형
1. sed 란?
sed는 **스트림 에디터(Stream Editor)**로,
파일 내용을 직접 열지 않고 텍스트를 검색·치환·삭제·출력 제어할 수 있는 명령어다.
grep이 “찾기”, awk가 “가공”이라면,
sed는 “수정”에 특화된 명령어라고 이해하면 된다.
로그 치환, 설정 파일 값 변경, 배포 스크립트에서 매우 자주 사용된다.
2. 기본 사용 방법
sed '명령' 파일
또는 파이프와 함께 사용한다.
명령어 | sed '명령'
2.1 가장 기본적인 출력 예제
sed 'p' app.log
- 모든 줄을 출력
- 기본적으로 sed는 출력 기능을 내장하고 있음
3. sed의 핵심 개념 (중요)
3.1 sed는 기본적으로 “파일을 바꾸지 않는다”
sed 's/a/b/' file.txt
- 화면 출력만 변경
- 원본 파일은 그대로 유지
👉 실제 파일을 수정하려면 -i 옵션이 필요하다.
3.2 sed 명령 기본 구조
sed '주소 명령' 파일
- 주소: 적용 범위 (줄 번호, 패턴 등)
- 명령: 수행 동작 (s, d, p 등)
4. 자주 사용하는 sed 명령
4.1 s : 치환 (가장 중요)
sed 's/old/new/' file.txt
- 한 줄에서 첫 번째 old만 new로 변경
모든 매칭 치환 (g 옵션)
sed 's/old/new/g' file.txt
4.2 특정 줄만 치환
sed '3s/old/new/' file.txt
3번째 줄에서만 치환
4.3 패턴이 있는 줄만 치환
sed '/ERROR/s/debug/info/' app.log
4.4 d : 줄 삭제
sed '/debug/d' app.log
debug가 포함된 줄 제거 (출력에서만)
4.5 p : 특정 줄만 출력
sed -n '5p' app.log
5번째 줄만 출력
sed -n '/ERROR/p' app.log
5. 자주 사용하는 옵션
5.1 -n : 자동 출력 비활성화
sed -n '/ERROR/p' app.log
- 출력할 줄만 선택적으로 출력
- p와 거의 항상 함께 사용
5.2 -i : 파일 직접 수정 (주의!)
sed -i 's/old/new/g' file.txt
- 원본 파일이 바로 변경됨
- 되돌릴 수 없음
👉 실무에서는 백업 옵션과 함께 사용 권장
sed -i.bak 's/old/new/g' file.txt
6. 옵션 조합 예제 (이건 꼭!)
6.1 로그에서 특정 문자열 치환
sed 's/ERROR/WARN/g' app.log
6.2 설정 파일 값 변경 (실무 핵심)
sed -i 's/DEBUG=false/DEBUG=true/' config.conf
6.3 여러 파일 한 번에 수정
sed -i 's/foo/bar/g' *.conf
7. grep · awk · sed 조합 예제
7.1 특정 로그만 필터링 후 치환
grep "ERROR" app.log | sed 's/ERROR/ERR/'
7.2 컬럼 가공 후 치환
awk '{print $1, $3}' app.log | sed 's/,//g'
8. 초보자가 자주 하는 실수
8.1 -i 옵션을 테스트 없이 사용
sed -i 's/a/b/g' file.txt ❌
- 바로 파일 변경
- 실수 시 복구 불가
👉 먼저 -i 없이 결과 확인 후 적용
8.2 슬래시(/) 포함 문자열 치환
sed 's//home/user//tmp/' file.txt ❌
👉 해결: 다른 구분자 사용
sed 's|/home/user|/tmp|' file.txt
8.3 정규식 개념 없이 사용
- . * ^ $ 의미를 모르면 예상과 다르게 동작할 수 있음
9. 실무에서 sed를 쓰는 타이밍
- 설정 파일 값 일괄 변경
- 로그 포맷 수정
- 배포 스크립트 자동 치환
- 다수 파일 내용 수정
10. 정리 한 줄 요약
- sed는 텍스트를 직접 수정할 수 있는 도구다.
- 이것만 기억하자:
-
sed 's/old/new/g' 파일
반응형