怎样grep出匹配组的信息并得到唯一输出

需求类似于regex匹配时可以指定匹配里某局部匹配为一个组(group),并得到该匹配组的输出。举例,文件里存在如下行:

for asnId: 14807053913 and asnUniqueContainerId: 53b659349265a4554246a6b94ad00752-1@2 but container not found

我要以”but container not found“得到所有匹配行,并且得到这些匹配行中的”asnId: "后面的ID值,并且保证输出唯一。

那么如果你的grep是GNU2.5以上,可以使用如下命令做到这件事:

grep "but container not found" application* | grep -oP 'asnId: \K\d+(?= )' | sort --unique

第一个grep过滤出所有符合要求的行,第二个grep用regex格式得到匹配组,sort可以保证输出的匹配值是唯一的。至于\K还有( ?=)的意思可以参考这里:https://unix.stackexchange.com/questions/13466/can-grep-output-only-specified-groupings-that-match

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值