SED
- Streamlined Editor의 약자
- 명령행에서 파일을 인자로 받아 명령어를 통해 작업한 후 결과를 화면으로 확인하는 방식
- sed 편집기는 쉘 리다이렉션을 이용해 편집 결과를 저장하기 전까지는 파일에 아무런 변경도 가하지 않음
- 명령 수행 후 출력 결과가 원본과 다르더라도 원본에 손해가 없음
옵션
sed --help
orman sed
option | Description |
---|---|
-e | 조건식 스크립트 직접 지정 |
-f | 조건식 스크립트가 기재된 파일 지정 |
-n | 패턴이 일치하는 라인만 출력 |
-r | 확장 정규표현을 사용한 스크립트를 사용 |
-i | 수정한 내용으로 파일 덮어쓰기 |
subcommand
subcommand | 설명 |
---|---|
a|현재 행에 하나 이상의 새로운 행 추가 | |
c|현재 행의 내용을 새로운 내용으로 교체 | |
d | 행 삭제 |
i|현재 행의 위에 텍스트 삽입 | |
h | 패턴 스페이스의 내용을 홀드 스페이스에 복사 |
H | 패턴 스페이스의 내용을 홀드 스페이스에 추가 |
g | 홀드 스페이스의 내용을 패턴 스페이스에 덮어쓰기 |
G | 홀드 스페이스의 내용을 패턴 스페이스에 추가 |
l | 출력되지 않는 특수문자를 명확하게 출력 |
p | 행 출력 |
n | 다음 입력 행을 첫 번째 명령어가 아닌 다음 명령어에서 처리 |
q | sed 종료 |
r | 파일로부터 행 읽어오기 |
! | 선택된 행을 제외한 나머지 전체 행에 명령어 적용 |
s | 문자열 치환 |
자주 쓰는 치환 플래그
flag | 설명 |
---|---|
g | 치환이 행 전체에 대해 이뤄짐 |
p | 행 출력 |
w | 파일에 쓰기 |
x | 홀드 스페이스와 패턴 스페이스의 내용을 서로 맞바꾸기 |
y | 한 문자를 다른 문자로 변환 (정규표현식 메타문자 사용 불가능) |
사용 예시
'#'로 시작하는 행 삭제
$ sed '/^#/d' sample.txt
빈 행 삭제
$ sed '/^$/d' sample.txt
첫 번째로 나타난 'DC' 문자를 Docker-Compose로 치환 후 원본 파일에 저장
$ sed -e 's/DC/Docker-Compose/3' sample.txt | tee sample.txt
모든 'DC' 문자를 'Docker-Compose'로 치환 후 원본 파일에 저장
$ sed -e 's/DC/Docker-Compose/g' sample.txt | tee sample.txt
대소문자 구분하지 않고 모든 'DC' 문자를 'Docker-Compose'로 치환 후 원본 파일에 저장
$ sed -e 's/DC/Docker-Compose/gi' sample.txt | tee sample.txt
탭을 스페이스로 변환
$ sed -e 's/<tab>/<space>/g' ./sample.txt
파일의 마지막에 내용 추가하고 기존 내용(원본) 덮어쓰기
$ sed -i '$a추가할내용' ./sample.txt