Linux / 명령어 / sed - 스트림에서 텍스트 검색·치환

sed는 입력을 한 행씩 읽고 편집 규칙을 적용해 결과를 출력하는 스트림 편집기입니다. 치환, 특정 행 선택, 삭제처럼 반복적인 텍스트 변환에 적합합니다.

sed 명령어란?

기본 실행은 원본을 수정하지 않고 변환 결과를 표준 출력으로 내보냅니다. 치환 명령의 형태는 s/찾을패턴/바꿀내용/플래그이며 g를 붙이면 한 행의 모든 일치를 바꿉니다.

기본 문법

sed [옵션] '편집명령' [파일 ...]

설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man sed으로 현재 시스템의 설명을 확인하세요.

사용 예제

첫 일치 치환

각 행에서 처음 일치하는 부분만 바꿉니다.

sed 's/old/new/' config.txt

한 행의 모든 일치 치환

g 플래그를 사용합니다.

sed 's/old/new/g' config.txt

특정 행만 출력

-n으로 자동 출력을 끄고 p로 범위를 출력합니다.

sed -n '5,10p' log.txt

치환 결과와 파일 변경 여부

기본 sed는 입력을 읽어 변환한 결과를 표준 출력으로 보내며 원본 파일을 바꾸지 않습니다. 아래 치환은 각 행의 첫 번째 red만 green으로 바꿉니다.

printf 'red car\nred red\n' | sed 's/red/green/'

예시 출력:

green car
green red

한 행의 모든 일치를 바꾸려면 치환식 끝에 g를 붙입니다. 파일을 직접 수정하는 -i는 구현마다 백업 접미사 문법이 다르므로, 중요한 파일은 먼저 백업하고 sed '...' 원본 > 새파일로 결과를 검토한 뒤 교체하세요.

특정 행만 출력하려면 sed -n '5,10p' 파일처럼 기본 출력 억제(-n)와 출력 명령(p)을 함께 사용합니다. sed의 정규식은 셸 글로브와 다르며, 큰따옴표 안에서는 셸이 $나 백슬래시를 먼저 해석할 수 있습니다. 치환식을 작성할 때 따옴표와 구분자도 확인하세요.

주요 옵션과 형식

옵션·형식 설명
-n 기본 자동 출력을 끕니다.
-e 스크립트 편집 명령을 여러 개 지정합니다.
-E 확장 정규 표현식을 사용합니다.
-i[접미사] GNU 구현에서 파일을 제자리 편집하고 선택적으로 백업합니다.

사용할 때 주의할 점

sed -i는 파일을 실제로 바꾸므로 중요한 파일에는 백업 접미사를 사용하고 결과를 검토하세요. GNU와 BSD의 -i 문법이 다릅니다. 셸 인용부호와 정규 표현식의 특수문자도 함께 고려해야 합니다.

자주 묻는 질문

sed만 실행하면 원본 파일이 바뀌나요?

아니요. 기본은 변경된 결과를 출력합니다. -i를 사용하거나 결과를 별도 파일에 저장해야 파일이 바뀝니다.

공식 문서

옵션의 정확한 동작과 구현별 차이는 sed 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / lsmod - 로드된 커널 모듈 확인

Linux / 명령어 / lsmod - 로드된 커널 모듈 확인

Linux lsmod 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / journalctl - systemd 시스템·서비스 로그 조회

Linux / 명령어 / journalctl - systemd 시스템·서비스 로그 조회

Linux journalctl 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / pacman - Arch Linux에서 패키지 설치와 전체 시스템 업데이트

Linux / 명령어 / pacman - Arch Linux에서 패키지 설치와 전체 시스템 업데이트

Linux pacman 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux / 명령어 / w - 로그인 사용자와 실행 중인 작업 확인

Linux / 명령어 / w - 로그인 사용자와 실행 중인 작업 확인

Linux w 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux 강좌 / APT와 DNF로 패키지 설치·업데이트하기

Linux 강좌 / APT와 DNF로 패키지 설치·업데이트하기

Debian·Ubuntu의 APT와 Rocky Linux의 DNF로 패키지를 검색·설치·업데이트·제거하는 방법을 비교합니다. 저장소와 의존성, 업데이트 전 확인할 항목을 다룹니다.

Linux / 명령어 / xz - 파일을 xz 형식으로 압축하기

Linux / 명령어 / xz - 파일을 xz 형식으로 압축하기

Linux xz 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux / 명령어 / mv - 파일 이동과 이름 변경

Linux / 명령어 / mv - 파일 이동과 이름 변경

Linux mv 명령어로 파일과 디렉터리를 이동하거나 이름을 변경하는 방법을 설명합니다. 덮어쓰기 방지, 파일 시스템 간 이동과 안전한 자동화 방법도 정리합니다.

Linux / 명령어 / comm - 정렬된 두 파일의 공통·고유 행 비교

Linux / 명령어 / comm - 정렬된 두 파일의 공통·고유 행 비교

Linux comm 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / command - 명령어 검색과 별칭 우회 실행

Linux / 명령어 / command - 명령어 검색과 별칭 우회 실행

셸 command 명령어로 함수 검색을 건너뛰어 원래 명령을 실행하고, command -v로 명령 존재 여부를 확인하는 방법을 설명합니다. -p·-V 옵션과 builtin·exec·env의 차이도 정리합니다.

Linux / 명령어 / fold - 긴 행을 지정한 너비로 나누기

Linux / 명령어 / fold - 긴 행을 지정한 너비로 나누기

Linux fold 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.