나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-01-22 17:29:11

sed(UNIX)

1. 개요2. 설명3. 옵션4. 스크립트
4.1. 주소 지정4.2. 명령어
5. 사이클
5.1. 패턴 공간(pattern space)5.2. 홀드 공간(hold space)
6. 관련 문서

1. 개요

sed, stream editor

유닉스 시스템에서 문자 스트림의 내용을 수정하고 편집하여 내보낼 수 있게 하는 유틸리티 중에 하나이다.

2. 설명

sed는 단독으로도 사용되고 실제로 어느정도 편집기의 역할을 할 수 있지만 주로 명령어 파이프 사이에서 사용되는데, 어떤 명령어의 출력을 가공하여 다른 명령어의 입력으로 넣는 것이다. 명령어 출력의 특정 부분만을 필요로 하거나, 쓸데없는 부분이 많다면 규칙에 따라 유용한 문자열만 추출하도록 하는 필터의 역할을 한다.

VLC를 root 계정으로 실행할때도 이 명령어를 사용한다.
sudo sed -i 's/geteuid/getppid/' /usr/bin/vlc

3. 옵션

기본 형식 : sed [efn] script file, script는 sed에서 사용하는 스크립트를 지정한다. 처리할 문자 스트림이 표준 입력으로 들어오지 않는 경우, file에 해당하는 파일을 대신 사용한다.

4. 스크립트

4.1. 주소 지정

주소 지정은 입력의 몇번째 줄을 대상으로 처리할지를 나타낸다. 명령어 별로 사용하는 범위가 다르기 때문에 보통 3가지의 주소 지정 모드를 가진다. ed에서 쓰이는 것과 비슷하고 실제로 일부는 호환이 가능하지만 확장 기능에서 몇가지 차이가 있어 완벽하게 호환되지 않는다.
$는 마지막 줄을 나타내는 특수 기호이다. !는 패턴 공간에 대한 주소가 아닌 경우, 그대로 실행한다.

4.2. 명령어

대부분의 명령어는 ed 유틸리티와 호환성이 있지만 흔적만 남고 줄 단위 편집기와 관련 없거나 sed 동작에 맞지 않는 명령어는 없어졌다.
아래의 두 명령어 모두 공통 동작으로 더이상 읽어올 줄이 없는 경우, 스크립트의 끝으로 이동한다는 특징이 있다.

5. 사이클

sed는 사이클이라는 단계로 동작을 구분한다. 매번 하나의 단계마다 입력으로부터 한 줄을 읽어 패턴 공간에 저장한다. 이 문자열은 줄 끝에 개행 문자가 포함되어있지 않다.

5.1. 패턴 공간(pattern space)

명령어의 실행 대상이 되는 공간이다. 즉, sed는 실제 파일을 편집하지 않는다. 패턴 공간은 사이클마다 초기화되는데 그 이유는 사이클의 시작 조건부터가 한 줄을 입력받는 공통 동작이 있기 때문이다.

5.2. 홀드 공간(hold space)

비휘발성 저장소와 비슷한 역할을 한다. 새로운 사이클이 시작되어도 초기화되지 않고 이전 데이터를 유지한다.

6. 관련 문서