본문 바로가기
Linux System/Linux

[cmd] sed

by rewyear 2022. 3. 15.

Description

GUI기반의 편집기인 vi처럼 CLI(Command Line Interface)기반으로 파일을 인자로 받아 명령를 통해 작업을 진행한 후, 화면에 출력하는 방식 명령어로서, 원본을 직접 수정하지 않고 수정한 결과를 출력해주는 역할의 명령어

 

Pattern space와 Hold space

sed명령어는 동작시 내부적으로 2개의 Work Space를 사용하는데, 이 두 버퍼를 Pattern Space(Pattern Buffer)와 Hold Space(Hold Buffer)라고 함

  • Pattern space: 입력 스트림을 통해 읽어들인 라인 한 줄이 저장되는 공간으로서 수정, 출력 등의 명령이 적용(처리)되는 공간
  • Hold space: 임시 저장공간으로서 수정 명령 등의 영향을 받지 않아 pattern space에서 처리된 내용을 hold space로 옮겨온 후 필요한 시점에 다시 가져올 수 있음

 

문법 및 옵션 

기본형태

sed [Option] [Script] [FileName] ...

 

옵션

옵션 설명 예시
-n 기본적으로 sed 명령어는 명령 수행 후 전체 내용을 출력하는데 해당 옵션을 사용하면 전체 출력 하지 않음(특정 패턴에 따라 출력되는 방식이 달라짐)  
-e [script] 다중 명령 적용 sed -e 's/strawberry/cherry/g' -e 's/banana/mango/g' test.txt
-i 명령 수행 후 변경된 내용을 원본 파일에 반영(저장)  

 

주요 사용 패턴

1. 표준 출력

sed -n '1p' data.txt			# 특정 1행 출력
sed -n '1,3p' data.txt			# 1~3번째 행까지 출력
sed -n '10,$p' data.txt			# 10번째 행부터 마지막 행까지 출력
sed -n '/banana/p' data.txt		# 'banana'를 포함한 행 출력

 

2. 삭제

sed '1d' data.txt		# 1번째 행 삭제
sed '5,$d' data.txt		# 5번째 행부터 마지막 행까지 삭제
sed '/banana/d' data.txt	# 'banana'를 포함한 모든 행 삭제
sed '/banana/!d' data.txt	# 'banana'를 포함하지 않는 모든 행 삭제

 

3. 치환

sed 's/root/ROOT/' data.txt		# 행마다 처음으로 발견 된 root 패턴을 ROOT로 치환
sed 's/root/ROOT/2' data.txt		# 행마다 두번째로 발견 된 root 패턴을 ROOT로 치환
sed 's/root/ROOT/g' data.txt		# 행마다 모든 root 패턴을 ROOT로 치환
sed -n 's/apple/Apple/p' data.txt	# 치환이 발생한 행만 출력
sed -e 's/apple/Apple/g' -e 's/orange/Orange/g' data.txt	# 여러개 치환 수행
sed '/red/s/apple/Apple/g' data.txt	# red가 포함된 행에서 apple 패턴을 Apple로 치환

 

4. 파일 내용 변환

300x250

'Linux System > Linux' 카테고리의 다른 글

ramdisk(initrd, initramfs)  (0) 2023.12.28
Root File System  (0) 2023.12.28
Console, Terminal, TTY  (0) 2022.03.10
[func] mmap() / munmap() - memory 맵핑  (0) 2021.07.23
[cmd] install 명령어  (0) 2020.08.05