egrep 是否能够输出带括号的子表达式的结果?
Is egrep able to output the results of parenthesized subexpressions?
egrep
能输出括号子表达式的结果吗?
我正在使用 macOS,当我查看 grep 的手册页时,它提到了 re_format(7)
。检查 man 7 re_format
,我看到它确实支持带括号的子表达式并将它们记录在 pmatch array
中。
然而,目前尚不清楚如何使 egrep
以某种方式仅输出分组中带括号的子表达式。
这就是您想要做的吗(使用 GNU awk 作为第三个参数来匹配 ()):
$ cat file
aa(bb(cc(dd)(ee)ff)(gg))hh
$ awk '{ while( match([=10=],/(.*)\(([^)]*)\)(.*)/,a) ) { print ++c, a[2]; [=10=]=a[1] a[3]} print "rest:", [=10=] }' file
1 gg
2 ee
3 dd
4 ccff
5 bb
rest: aahh
否,egrep
无法输出括号子表达式的结果。
egrep
能输出括号子表达式的结果吗?
我正在使用 macOS,当我查看 grep 的手册页时,它提到了 re_format(7)
。检查 man 7 re_format
,我看到它确实支持带括号的子表达式并将它们记录在 pmatch array
中。
然而,目前尚不清楚如何使 egrep
以某种方式仅输出分组中带括号的子表达式。
这就是您想要做的吗(使用 GNU awk 作为第三个参数来匹配 ()):
$ cat file
aa(bb(cc(dd)(ee)ff)(gg))hh
$ awk '{ while( match([=10=],/(.*)\(([^)]*)\)(.*)/,a) ) { print ++c, a[2]; [=10=]=a[1] a[3]} print "rest:", [=10=] }' file
1 gg
2 ee
3 dd
4 ccff
5 bb
rest: aahh
否,egrep
无法输出括号子表达式的结果。