2012-09-20 2 views
1

한 단어를 다른 파일로 대체하는 스크립트 파일이 있습니다.쉘 프로그래밍에서 이스케이프 문자열로 특수 문자를 대체

이것은 내가 사용하는 코드 조각입니다. 지금 내가 직면하는 문제는 Var1과 Var2가 경로 이름 일 때입니다. 쉘 스크립트 작성에 꽤 새로운 것입니다. 전 .since var1과 var2가 앞에 있어야합니다. 내가 수동으로이 THER이 명령 앞에 특별한 부르는 것들은를 감지와 $ f는 파일 이름

sed -i "s/$Var1/$Var2/g" "$f" 

답변

1

생수,

당신은 문을 분리하는 다른 문자를 사용할 수 있습니다

sed "s%PATTERN%PATTERN%" 

나오지도 볼 첫 번째 문자가 명령 한 후, 당신의 패턴을 분리하기 위해 사용됩니다. 당신의 예에서

,이 수 :

sed -i "s%$Var1%$Var2%g" "$f" 

다음 $Var1$Var2/하지만 %를 개최 할 수있다. 구분 기호를 패턴으로 사용해야하는 경우 \으로 이스케이프해야합니다.

0

당신은 수도있다

이스케이프 시퀀스로 대체 할 수있는 방법을 .is는에 이스케이프 시퀀스를 넣어 어차피 CSV 파일에서 읽기 다음과 같은 변수를 인용하십시오.

sed -i '[email protected]'"${Var1}"'@'"${Var2}"'@g' "${f}" 

또한 유의하십시오. 변수에 경로를 언급 했으므로 은 @으로 바뀝니다.

+0

특수 문자가없는 일반 단어로 사용할 수 있습니까? 아니면 Var가 '/'문자를 가지고있을 때만 사용할 수 있습니다. – user1364861

+0

**/** ** ** **, ** | **, **! ** 등 ** 자유롭게 ** in * sed *. – leafei

관련 문제