1

我无法让这个 perl 语句正确过滤输出文件。

perl -00 -wnl -e '
   /Instance list size <\d+>\n(.+)\*\*end/s or die "error msg\n";
foreach my $line (split("\n", $1)) {
  $line =~ /(==)$/ && print "\"$_\"" ;
}' $Output_File 2>&1

我感兴趣的输出是所有以 == 结尾的行。但是由于某种原因,当我运行它时,即使在一个只有 8 行和 1 个预期匹配的文件中,我也会得到 22 个匹配。

4

2 回答 2

2

我不确定您为什么使用该-n选项并且脚本中仍然有一个foreach my $line ...。的全部意义-n在于它会一次自动地为您的脚本提供一行。

这对我有用:

$ cat foo.txt
asdfasdfsadf asdf a== asfd a sdf
aasdf asdf asd f==

asdf asdf asdf sad fsdaf==
asdfasdfasdf sadfsadf=aa sdfasdf =

$ perl -ne "print if /==$/" < foo.txt
aasdf asdf asd f==
asdf asdf asdf sad fsdaf==
于 2013-05-30T23:32:56.410 回答
2

您可以随时尝试grepgrep '==$' file.txt

于 2013-05-30T23:35:53.140 回答