2016. 6. 2. 01:23


GNU sed


stream editor 를 줄여서 sed 라고 하는 것 같다.


파일 내 문장의 내용 변경

sed '/nproc/c\MODIFIED BY HAEBI' test.conf

sed '/찾을문자열/c\바뀔 문자열' 파일


nproc가 포함된 줄의 내용이 MODIFIED BY HAEBI로 바뀌는 예이다.

아직은 화면에 출력만 되고, 실제 반영이 되지 않는다. sed -i 옵션을 주면 바로 반영되므로 주의.


단순히 찾을 문자열  또는 단어만 가지고는 대상을 특정 짓기가 어렵기에 정규식을 사용해 보겠다.


아래 왼쪽 내용을 찾아서 오른쪽 내용으로 바꾸어 보도록 하겠다.

 *    -    core    unlimited

   >

 *    -    core    100000


찾을 정규식 패턴...

\S+\s+\S+\s+core\s+\S+ 

[문자 1개 이상] - [공백 1칸 이상] - [문자 1개 이상] - [공백 1칸 이상] - [core] - [공백 1칸 이상] - [문자 1개 이상]

(정규식 작성은 regexr 사이트에서 작성을 권장)


sed 에서 정규식 사용시 +기호 앞에 \을 붙여야 한다.

sed '/\S\+\s\+\S\+\s\+core\s\+\S\+/c\*    -    core    100000' test.conf

복잡해 보이지만 별거 없다.

정규식 + 기호 앞에 \을 붙여주고, 가운데 /c\ 을 기준으로 앞, 뒤 내용 참고하면 쉽게 파악할 수 있다.


sed '/찾을내용/c\바뀔내용' 파일

 sed 

  '/찾을내용

 /c\

  바뀔내용'

 파일

 파일에서 찾은 내용을 변경

 sed

  '/찾을내용

 /d'

 

 파일

 파일에서 찾은 내용을 제거


변경의 경우, 기존에 존재하지 않으면 변경을 할 수가 없는 문제가 있다.


반드시 적용해야 될 내용이라면 기존 내용을 찾아서 제거 하고 다시 써 넣도록 해야 할 것 같다.







Posted by 해비