2017-05-07 30 views
0

egrep能够输出带括号的子表达式的结果吗?egrep能够输出括号内的子表达式的结果吗?

我使用的是macOS,当我检查grep的手册页时,它提到了re_format(7)。检查man 7 re_format,我发现它支持加括号的子表达式并将它们记录在pmatch array中。

但是,目前还不清楚如何使egrep以某种方式在组中输出括号内的子表达式。

+0

某些'grep'版本具有'-o'选项来输出匹配正则表达式的部分..但是这不需要捕获组...您必须添加示例输入行和预期输出...也,grep是你可以使用的唯一命令?为什么不使用sed/awk/perl等 – Sundeep

+0

Greetings @Sundeep - grep并不是唯一的选择,但我很好奇它是否可以完成。看起来我确实将不得不使用像您所引用的更专业化的语言。 –

+0

是的。或没有。这一切都取决于你的意思。您的问题显示[mcve],包括简洁,可测试的示例输入和预期输出,以阐明您想要执行的操作。 –

回答

0

没有,egrep不能输出带括号的子表达式的结果。

0

这是什么youre试图做(使用GNU AWK的第三个参数匹配()):

$ cat file 
aa(bb(cc(dd)(ee)ff)(gg))hh 

$ awk '{ while(match($0,/(.*)\(([^)]*)\)(.*)/,a)) { print ++c, a[2]; $0=a[1] a[3]} print "rest:", $0 }' file 
1 gg 
2 ee 
3 dd 
4 ccff 
5 bb 
rest: aahh 
+0

这很酷,我很欣赏你的努力,但我只是想知道'egrep'是否可行。不管怎么说,还是要谢谢你! –

+0

这取决于它是什么。在你的问题下看到我的评论。 –

+0

目前我被困时间了(感谢您的持续努力!),但如果您在https://www.freebsd.org/cgi/man.cgi?query=re_format&sektion=7中搜索“括号内的子表达式”,那么你可以看到我在说什么。我希望'grep'只输出这些匹配。 –