2011-03-07 4 views
2

^문자로 시작하는 줄이 있는데 줄의 시작과^charater 싶습니다. 하지만 그것 wokring.perl 한 줄 정규식 이스케이프^문자

echo "^./mnt/" |perl -slane ' print if m#^$line$#o' -- -line="^./mnt/" 

이 정규 표현식을 인수로 전달 된 입력 regularexpression과 어떻게 일치시킬 수 있습니까?

이 하나는 작동하지만 나는 perl에서 작동하도록하고 싶습니다.

#echo "^./mnt/" |perl -slane ' print if m#^$line$#o' -- -line="\\^./mnt/" 
^./mnt/ 

감사 SR이

+0

중복 가능성을 사용할 수있는 [I는 펄 정규 표현식의 특수 문자를 처리하려면 어떻게합니까?] (http://stackoverflow.com/questions/576435/ how-do-i-handle-special-characters-perl-regex) – daxim

답변

2

에이기 때문에 확인하십시오.

이 경우
echo "^./mnt/" |perl -slne'print if /^\Q$line\E$/' -- -line="^./mnt/" 

, 당신은 단지의

echo "^./mnt/" |perl -slne'print if $_ eq $line' -- -line="^./mnt/" 
2

당신은 당신의 인수에 특수 문자를 이스케이프 할 필요가 (이 정규식에 직접 내장 된 것처럼).

echo "^./mnt/" |perl -slane ' print if m#^$line$#o' -- -line="\^\.\/mnt\/"

+0

내 문제는 Perl에 인수로서 ./mnt/ perl에 대한 인수로서, 어떻게 perl 내부에서 esacpe 할 것인가? – sfgroups

1

어쩌면 m#^\Q$line\E# 또는 m#^\Q$_\E#하지만 내가 (E \ 아마도 \ Q ... 통해) 정규식 패턴, 사용 quotemeta에 텍스트를 변환하려면 windoz 상자

+0

예, m #^\ Q $ line \ E $ # '- 라인 = "^./mnt /"일 경우'echo "^./mnt /"| perl -slane'프린트합니다. ^./mnt /' – sfgroups

관련 문제