본문 바로가기

Linux

[linux] sed 명령어를 통한 파일 문자열 치환 예제

반응형

 

 

sedstream editor 이름을 줄인 명령어로, 말그대로 스트림 편집기를 의미한다. 주로 문자열을 치환하거나 삭제할때 유용하게 사용할 수 있는 명령어다. 이 외에도 특정 라인까지 출력, 특정 패턴에 맞는 행들만 출력하는 기능을 지원한다. 그렇다면 sed 명령어를 어떻게 사용하는 사용법과 예제를 살펴보자.

 

 

sed 명령어 사용법

문자열 치환

 

sed 's/원본문자열/바꿀문자열/g' 파일명

 

문자열 치환은 위와 같이 진행할 수 있다. 여기서 눈 여겨볼 부분은 s와 g인데, s는 치환을 하겠다는 subcommand이고 g는 전체 문자열을 대상으로 진행하겠다는 의미다. 

 

특정 파일의 lim 이라는 문자열을 kim으로 변경하기

$ cat text
Lim's coding blog.
coding blog made by lim coding.
This is sed test file written by lim.
Thank you.

위와 같은 텍스트 파일이 있다고 하자. 이를 sed 명령어를 통해 lim을 kim을 바꿔보자. 

 

$ sed 's/lim/kim/g' text
Lim's coding blog.
coding blog made by kim coding.
This is sed test file written by kim.
Thank you.

위 처럼 lim을 kim으로 변경했다. 하지만 Lim 처럼 대문자가 포함된 문자열은 치환되지 않았는데, 이는 i 옵션을 통해서 대소문자 구분없이 치환할 수 있다. 

 

# 대소문자 관계없이 치환
$ sed 's/lim/kim/gi' text

 

여기서 주의할 점은 이렇게 하면 원본 파일을 그대로 남아있다는 점이다. 해당 출력을 새로운 파일로 저장해보자.

 

치환 하여 새로운 파일로 저장

# text 파일의 내용을 치환한 내용을 new-text에 저장
$ sed 's/lim/kim/g' text > new-text

 

그렇다면 원본을 수정하고 싶으면 어떻게 할까요? 이떄는 i 옵션을 통해서 수행할 수 있습니다. 

 

원본 파일 수정하기 (-i옵션)

$ sed -i 's/lim/kim/gi' text

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형