正则表达式只使用awk打印匹配的字符串而不是整行

时间:2018-03-03 15:13:56

标签: awk

我试图只匹配ID" 549d40r0-1e1b-01v8-0d72-0a8f2c680100"从下面的数据,我使用正则表达式进行模式匹配,但是只需要匹配ID而不是整行具有模式匹配。你能帮我用AWK吗?

这是正则表达式:     ([A-Z0-9] - [A-Z0-9] - [A-Z0-9] - [A-Z0-9] - [A- Z0-9] *):

[SyncThread:server:_88285] ERROR SyncThread.logDeliveryFailure(1535) - 
Delivery for server threw runtime exception. Failed to send data: 549d40r0-
1e1b-01v8-0d72-0a8f2c680100: java.net.ConnectException: Connection refused: 
connect -- Connection refused:

谢谢和问候,

1 个答案:

答案 0 :(得分:1)

解决方案1: 如果您的ID(您在帖子中发布的字符串)在一行中,并且您只想查找特定字符串,那么请关注可以帮助你。

awk -v var="549d40r0-1e1b-01v8-0d72-0a8f2c680100" '{if(match($0,var)){print substr($0,RSTART,RLENTH)}}'  Input_file

<强> OR

awk -v var="549d40r0-1e1b-01v8-0d72-0a8f2c680100" 'match($0,var){print substr($0,RSTART,RLENTH)}'   Input_file

解决方案第二: 如果您的ID(您在帖子中发布的字符串)在一行中,并且您希望将其与正则表达式匹配(根据只显示例子)然后下面可能会帮助你。

awk '{if(match($0,/[0-9a-z]+\-[0-9a-z]+\-[0-9a-z]+\-[0-9a-z]+\-[0-9a-z]+:/)){print substr($0,RSTART,RLENTH)}}'   Input_file

<强> OR

awk 'match($0,/[0-9a-z]+\-[0-9a-z]+\-[0-9a-z]+\-[0-9a-z]+\-[0-9a-z]+:/){print substr($0,RSTART,RLENGTH)}'  Input_file