如何使用awk仅提取数字

如何使用awk仅提取数字,awk,numbers,Awk,Numbers,您好,我有以下输出: replication complete (rid=969811 lid=969811) 或者有时: no change of listener transaction id for last 0 checks (rid=971489 lid=970863) 现在我想使用awk只从rid和lid中获取数字,以下仅适用于第一个选项 |awk -F'[^0-9]*' '{print $2-$3}' 如果您的目标是使用rid和lid值,则可以使用此awk awk -F\(r

您好,我有以下输出:

replication complete (rid=969811 lid=969811)
或者有时:

no change of listener transaction id for last 0 checks (rid=971489 lid=970863)
现在我想使用awk只从rid和lid中获取数字,以下仅适用于第一个选项

|awk -F'[^0-9]*' '{print $2-$3}'

如果您的目标是使用
rid
lid
值,则可以使用此
awk

awk -F\(rid=\|lid=\) '{print $2-$3}' yourfile
(或)


作为练习,剩下的选择

另一种解决方案,它仅在GNU awk 4中工作。

你得到

971489 970863 969811 969811 0 你得到

971489 970863 969811 969811 0 你得到

971489 970863 969811 969811 0 0
因为awk解析字符串的方式而起作用。

您好,但这对我不起作用。当我打印$1时,这个复制就完成了(nid=969811,当我使用$2时,我得到这个:969811)@colttt,更新的答案。它对我来说工作得很好。我在
GNU Awk 4.1.1
中进行了尝试。什么是
awk
版本?
GNU awk 4.1.1
相同。。我尝试
echo“最近0次检查(nid=971491 lid=970876)没有更改侦听器事务id”|awk'BEGIN{FS=“(rid=|lid=)”}{print$2}'
您想按主题和文本所述打印(提取)这两个数字,还是像脚本那样打印从第一个数字减去第二个数字的结果?请编辑您的问题以显示准确的预期输出。这是一种非常常见的情况,在这种情况下,从您发布的输入中生成您想要的输出是微不足道的,但从您未告诉我们的输入中可能存在的其他文本变体中不生成您不想要的输出要困难得多。所以,想想它是做什么的,以及是否有什么不同于你目前在文本中向我们展示的东西可能是一个问题。嗯,因为它假设输入中总是正好有两个数字,这显然不是真的?
awk -F'=' '{print int($2)-int($3)}'