2014-05-16 3 views
1

문자열 "ABC"를 ". $ VAR"로 바꾸려고합니다. 아래 명령을 실행하십시오.모든 파일에서 문자열을 변수로 바꾸기

perl -p -i -e "s/ABC/\.\$VAR\./g" * 

이렇게하면 문자열이 ". $ VAR"대신 ".."로 표시됩니다. 누구나 내가 뭘 잘못 말하고 있는지 알려주시겠습니까 ??

답변

1
  1. 탈출 할 필요가 없습니다.

    perl -i -pe 's/ABC/.\$VAR\./g' * 
    

    그렇지 않은 : 그것은

  2. 그냥 $의 VAR에게
+0

감사합니다 :) – user2013387

1

를 사용하여 작은 따옴표를 보간하지 않는 쉘 있도록 몸 주위에 작은 따옴표를 사용하십시오 패턴이 아니기 때문에 측면을 대체에 , 당신은 쉘에서만 $ VAR을 빠져 나갑니다. 펄 수준이 아닙니다. 큰 따옴표를 사용하려면 3 개의 백 슬래시를 사용해야합니다.

perl -i -pe "s/ABC/.\\\$VAR\./g" * 
+0

대 .. 고맙습니다 .. (Y) – user2013387

1

펄 변수는 셸 변수와 함께 $으로 시작합니다. $VAR 앞에 정확하게 \을 삽입했으나 Perl 수준이 아닌 셸 수준에서 변수가 확장되지 않습니다. 더 많은 백 슬래시를 추가하거나 작은 따옴표로 전환하십시오. [정보에 대한

perl -i~ -pe "s/ABC/.\\\$VAR./g" * 

또는

perl -i~ -pe 's/ABC/.\$VAR./g' * 
관련 문제