본문 바로가기
SWE/Linux

활용도가 높은 리눅스 명령어 sed [스트림 에디터] | 15가지 예제 코드

by S나라라2 2020. 3. 20.
반응형
  • sed [Stream Editor] ?

리눅스 명령어의 일종으로, stream editor라고 불린다. sed는 text를 변형하고 출력하는 텍스트 편집 도구이다. 

 

  • 활용도

sed 명령어는 다양한 활용이 가능한데, 예를 들어 다음과 같은 경우에 사용될 수 있다.

- 다수의 파일에서 특정 키워드를 다른 키워드로 일괄적으로 치환할 때

- 파일에서 특정 단어가 있는지 확인할 때 (해당파일을 열지않고 확인할 수 있음)

 

  • 15가지 예제 코드

(1) 특정 n 라인 출력

 

리눅스 명령어 head와 tail을 사용하면 파일의 처음이나 마지막 줄을 확인할 수 있다.

거기서 나아가 sed는 파일을 중간 라인도 확인이 가능하다.

# sed -n '5, 10p' myfile.txt

// myfile.tx의 5~10라인을 출력

 

 

(2) 특정 n 라인을 제외한 출력

# sed '20,35d' myfile.txt

// 20~35라인을 제외하고 전부 출력

 

 

(3) 다수의 특정 라인 출력

# sed -n -e '5,7p' -e '10,13p' myfile.txt

// 5~7라인과 10~13라인을 출력

 

-n 옵션 : (sed는 보통 모든 행을 읽어오는데 ) n옵션을 주게되면, 그 뒤에 오는 숫자행부터 처리를 하게 된다.

-e 옵션 : 실행될 명령어에 스크립트를 추가한다. 즉, 명령어 앞에는 항상 붙여줘야한다.

 

 

(4) 단어 또는 문자 치환

# sed 's/[현재단어]/[미래단어]' <file nmae>

파일에서 [현재단어]를 모두 찾아서 [미래단어]로 치환한다.

 

# sed 's/version/story/g' myfile.txt

// myfile.txt 파일 내의 version 단어를 story로 변경

# sed 's/version/story/gi' myfile.txt

// gi 옵션 : 대소문자 구분없이 처리한다.

 

# ip route show | sed 's/  */ /g'

// '|' 문자는 리눅스에서 파이프라인을 의미한다. 

// 보통 (1명령어) | (2명령어) 같은 구조로 사용되고, 명령어1을 먼저 실행 후, 명령어 2가 그 결과를 받아서 실행한다.  ㅏ

 

// 특정 파일이 아닌 ip route show 명령어의 결과를 sed 명령어로 한 번 더 필터링한다.

// sed 's/  */ /g'

// 여러개의 빈 칸을 하나의 스페이스로 변경한다.

 

명령어 실행 결과를 비교하면 쉽게 이해할 수 있다.

 

(5) 특정 범위 내에서 단어 또는 문자 치환

# sed '30,40 s/version/story/g' myfile.txt

// myfile.txt 의 30~40라인 내에서 version단어를 story단어로 치환한다.

 

 

(11) 단어 치환 및 원본 파일 백업

10번까지의 예제 명령어들은 파일을 수정하고 원본파일을 저장하지 않았다. 파일을 수정하고 원본 파일은 따로 저장하려면 '-i 옵션'을 주면 된다.

# sed -i '.orig' 's/this/that/gi' myfile.txt

// myfile.txt 내의 this를 모두 that으로 변경한다. 이 때 변경하지 않은 원본 파일을 myfile.txt.orig로 저장한다.

 

 

 

 

출처 : https://www.tecmint.com/linux-sed-command-tips-tricks/

반응형