커맨드 라인에서 인수를 취하여 스크립트 내의 정규식으로 사용하여 파일의 라인을 필터링하고 싶습니다. 간단한 예를 script.pl에서특정 값을 가진 라인을 필터링하기위한 커맨드 라인 인수로서의 정규식
$ perl script.pl id_4
:
...
my $exp = shift;
while(my $line = <$fh){
if($line =~ /$exp/){
print $line,"\n";
}
}
...
내 실제 스크립트는 좀 더 복잡하고 정보를 추출하고 다른 출력을 생성하기 위해 라인에 다른 조작을 수행합니다. 내 문제는 내가 "id_4"를 포함하는 선만 선택하는 대신 "id_4"가 포함 된 모든 행을 걸러 내고 싶은 상황이 있다는 것입니다. 일반적으로이
if($line !~ /$exp/)
에 의해 달성 될 수 있지만, 가능하면, 내가 인수의 더 복잡한 설정을 받아 내 스크립트를 변경하지 않으려는 (두 번째 매개 변수는 "NE"경우 예 : !~
을 사용하고 =~
경우 아니).
누구나 ("id_1 | id_2 | id_3 | id_5 ..."옆에있는) 여러 가지 가능성 중에서 하나의 특정 값을 포함하는 행을 필터링 할 수있는 정규식을 생각할 수 있습니까? 나는 여기에 도둑질을 요구하고 두려움에 빠지며 아마 단지 합리적인 것을 고수해야하고 또 다른 주장을 받아 들여야한다.
, 당신이 최고의 옵션으로 제안한 "없습니다"(또는'그렙 용어로 -v') 인수를 추천 할 것입니다. 거짓 우아함을 위해 코드를 복잡하게 작성하지 마십시오. – DVK