Perl 单行代码的输出

Perl 单行代码的输出

我有一个perl单行代码:

perl -pe 'while (/((\(.*?[^)]\))|(".*?"))/g) {print "$1 ";} print "\n"' testdata

该文件testdata包含以下内容:

"123" (123) 123

输出是:

"123" (123)
"123" (123) 123

但是我需要:

"123" (123)

我能做些什么?

答案1

如何穆鲁评论道:

-p打印$_。如果您要自己打印,请使用-n

perl -ne 'while (/((\(.*?[^)]\))|(".*?"))/g) {print "$1 ";} print "\n"' testdata

答案2

嗯,你可以简单地把你正在寻找的查询(数据模式)放在这些符号之间,并严格要求这样做

‘数据模式’

无论这个数据模式包含什么...甚至通配符也是允许的...

这看起来是您命令的预期用途的一部分,例如

“123”(123)”

或者看起来像

\'“123”(123)\'

在您的评论之后,我添加了以下内容(请不要对我投反对票 - 相反,请保持建设性的意见,但不要像在 cakepoof 中那样用拇指)因此使用管道添加或链接到 grep -e 的 perl 行如下:

perl -pe'虽然(/(((。?[^)]))|(".?))/g){打印“$ 1”;}打印“ \ n”'测试数据| grep -e'“ 123”(123)'

或者

perl -pe'虽然(/(((。?[^)]))|(".?))/g){打印“$ 1”;}打印“ \ n”'测试数据| grep -e \'“ 123”(123)\'

相关内容