2014-02-20 3 views
0

아래 명령을 실행하고 싶습니다.Perl 명령에서 슬래시 사용

perl -pi -w -e 's//apps/LIVE/appl/xx/11.5.0//$XXTOP//g;' prog.txt 

여기서 소스와 대체에는 모두 슬래시가 있습니다.

처리 방법은 무엇입니까?

- 업데이트

내가 제안했다 중괄호와 물결표했습니다. , 달러 기호가 문제를주는, 다른 사람은 잘 작동이 경우

perl -pi -w -e 's{apps/LIVE/appl/xx/11.5.0}{$XXTOP}g;' prog.txt 

..

Error: 
Name "main::XXTOP" used only once: possible typo at -e line 1. 
Use of uninitialized value at -e line 1, <> chunk 1. 
Use of uninitialized value at -e line 1, <> chunk 2. 

답변

3

를 사용하여 다른 구분자 : 당신은 %ENV를 통해 환경 변수에 액세스 할 수

perl -pi -w -e 's~/apps/LIVE/appl/xx/11.5.0/~$XXTOP/~g;' prog.txt 

같은 :

perl -pi -w -e 's~/apps/LIVE/appl/xx/11.5.0/~$ENV{XXTOP}/~g;' prog.txt 
+0

이것은 내 것보다 읽기 쉽습니다. +1. – slayedbylucifer

+0

오류 : "main :: XXTOP"이름은 한 번만 사용됩니다. -e 줄 1에 오타가있을 수 있습니다. -e 줄 1, <> 청크 1에서 초기화되지 않은 값 사용. -e 줄 1에서 초기화되지 않은 값 사용, <> 청크 2. – user1809047

+0

@ user1809047 : 편집을 참조하십시오. 원하는 것을 원하십니까? – Toto

0

텍스트에 $XXTOP 텍스트를 표시 하시겠습니까? {\$XXTOP}

perl -pi -w -e 's{apps/LIVE/appl/xx/11.5.0}{\$XXTOP}g;' prog.txt 

$XXTOP는 펄 변수라고 생각 - 그 경우는 $ 탈출. 당신이 환경 변수를 확장하여 사용하고자하는 경우의

$ENV{$XXTOP}

0

해결 : 솔루션 :

펄 -pi -w -e '의 {애플 리케이션/라이브/APPL/XX/11.5. 0} {\ $ XXTOP} g; ' prog.txt