2010-06-10 6 views
8

이것이 간단한 질문 일 수 있다고 생각하지만 모든 곳을 살펴본 후 해결 방법을 시도했지만 문제는 해결되지 않았습니다.Sed가 bash 스크립트 내에서 작동하지 않음

문제 설명 :

sed -e 's/pattern1/pattern2/g' full_path_to_file/file 

하지만 떠들썩한 파티 스크립트 내에서 같은 회선을 사용할 때 내가 할 수 없습니다 : I 파일 내부에 문자를 교체해야 내가 쉽게 명령 줄을 사용하여 수행 할 수 그것을 대체 할 수있는 것, 그리고 오류 메시지가 나타나지 않고 파일 내용이 대체되지 않습니다.

#!/bin/sh 

VAR1="patter1" 
VAR2="patter2" 

VAR3="full_path_to_file" 

sed -e 's/${VAR1}/${VAR2}/g' ${VAR3} 

어떤 도움을 주시면 감사하겠습니다.

감사합니다.

+0

sed -e는 파일을 변경하지 않고 파일을 대체로 표시하지만 파일은 변경되지 않습니다. – chmeee

답변

17

시도

sed -e "s/${VAR1}/${VAR2}/g" ${VAR3} 

Bash reference는 말한다 :

문자 '$'와 '' '따옴표

따라서

내에서 특별한 의미를 유지 그것을 해결할 수있을 것입니다 귀하의 변수

0

나는 스크립트 li를 사용합니다 너 너의 것 ... 그리고 내 작품뿐!

#!/bin/sh 

var1='pattern1' 
var2='pattern2' 

sed -i "s&$var1&$var2&g" *.html 

내는 "-i"를 사용하는 것이보기 ...와 "&는"내가 사용하는 구분자 문자는 당신으로 다르다. 구분 문자 "&"은 패턴이없는 다른 문자를 사용할 수 있습니다.

당신은 사용할 수 있습니다

sed -i "s#$var1#$var2#g" *.html 

sed -i "[email protected][email protected][email protected]" *.html 

...

을 내 패턴 인 경우 : "[email protected]"당신이 다른 "#"같은 구분자를 사용해야합니다 물론, "%" ... 오케이?

관련 문제