我有一个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)\'