본문 바로가기

OS/LINUX, UNIX

OS - 파일 내의 특정 문자열 치환하기

sed -i 명령어 (stream editor) 

 

사용법 : sed -i  's/변경 전 내용/변경할 내용/g' 파일명

예시) sed -i 's/1000/2000/g' jennifer.conf

 

-i 옵션을 사용해야 실제 파일에 수정사항을 적용시킬 수 있음

운영체제나 환경에 따라서 안먹힐 수 있음 linux에서만 먹음

운영체제 확인 명령어 : uname -a

 

위의 명령어 칠 때 변경되면 안되는 파일까지 변경되지 않도록  적용

파일명 지정에 주의할 것

하나만 테스트 해본 후 나머지에 적용하는 방법도 있음

 


 

여러 파일 내의 특정 문자열 한번에 치환하기

 

#01. find 명령어

수정하고자 하는 파일들을 찾는다

사용법 : find 찾아볼 위치 -name "*.찾아볼 파일 형식"

예시) : find ./ -name "*.html"

 

#02. exec 명령어

find로 찾은 파일 대상으로 sed 명령어를 수행하도록 한다

예시) find ./ -name "*.html" -exec sed -i 's/old/new/g' {} \;

예시) find /App -name "*.conf" -exec sed -i 's/192.168.56.7/192.168.56.9/g' {} \;

#03. 옵션 설명

./ 는 '현재 위치부터' 라는 뜻

-exec 옵션 + {} \; 의 의미

-exec => 조건을 가지고 찾은 파일들을 대상으로 다음 명령어를 실행하라는 의미

; => -exec 다음부터 세미콜론(;) 을 만날 떄 까지가 그 범위가 됨

\ => 세미콜론의 특수한 의미를 제거하기 위해 세미콜론 앞에 백슬래쉬(\)를 함께 적어줘야 함 => \;

{} => 찾은 파일을 의미. 여기서는 sed 명령어를 적용할 대상(find 명령어로 찾은 파일)을 의미.

 


 

sed -i 가 안되는 경우 (-i 옵션이 없다고 뜰 경우)

perl -pi -e  's/5700/5300/g' 으로 해결