system ("grep -E 'Type|group|slack (' $a > temp.rpt");
Run Code Online (Sandbox Code Playgroud)
上面这行给了我一个错误 Unmatched ( or \(
这有什么不对?
我之前(也尝试过反斜杠.它显示相同的错误.
既然你在脚本中,为什么不在Perl中这样做呢?
my $infile = '...';
open my $fh, '<', $infile or die "Can't open $file: $!";
open my $out_fh, '>', $temp.rpt or die "Can't open $temp.rpt: $!";
while (<$fh>) {
print $out_fh $_ if /Type|group|slack \(/;
}
Run Code Online (Sandbox Code Playgroud)
根据需要调整正则表达式.通常,现在更改和调整更容易.
如果输入文件不是太大,一旦打开文件,您也可以在一行中处理
print $out_fh grep { /Type|group|slack \(/ } <$fh>;
Run Code Online (Sandbox Code Playgroud)
所述的grep强加列表上下文上的<>操作者,所以它读取并一次返回所有行的列表,并且被打印在通过条件的那些.
关于正则表达式的评论.就目前而言,它匹配Type或者group或者slack (.如果你打算匹配其中任何一个单词,然后是space-paren,你需要分组括号,/(?:Type|group|slack) \(/.该?:有如此它不是无谓地捕获.