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' |
|
파일 |
파일에서 찾은 내용을 제거 |
변경의 경우, 기존에 존재하지 않으면 변경을 할 수가 없는 문제가 있다.
반드시 적용해야 될 내용이라면 기존 내용을 찾아서 제거 하고 다시 써 넣도록 해야 할 것 같다.