像这样: p.txt
abc-111-zzz-022-ffff
abc-222-zzz-033-ffff
abc-333-zzz-044-ffff
我可以获得完整的匹配(正则表达式中的$0
):
[root@ser user]# grep -Po 'abc\-([0-9]+)\-zzz\-([0-9]+)' p.txt
abc-111-zzz-022
abc-222-zzz-033
abc-333-zzz-044
如何仅获取子组内容$1$2
,例如:
111022
222033
333044
谢谢!
最佳答案
grep
不允许打印捕获组。使用sed
:
sed -E 's/abc-([0-9]+)-zzz-([0-9]+).*/\1\2/' file
111022
222033
333044
或者,如果您有pcregrep
然后使用此命令打印前 2 个捕获组:
pcregrep -o1 -o2 'abc-([0-9]+)-zzz-([0-9]+)' file
111022
222033
333044
关于regex - 如何获取正则表达式匹配的子组的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67676149/