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' 으로 해결