【问题标题】:AWK display the line number of last matchAWK 显示最后匹配的行号
【发布时间】:2015-08-17 09:55:35
【问题描述】:

我是 AWK 的新手。有谁知道如何使用 awk 打印出文件最后匹配的行号。 下面是一小部分Test.txt文件内容:

CLOSE #140,value=140
WAIT = #14039,value=143
CLOSE #140,value=144
WAIT #0,value=155
WAIT = #14039,value=158
CLOSE #140,value=160

这是我目前使用的代码 成功第一行:

awk -F= '{if($NF >= 143 && $NF <= 158){print NR,exit}}' Test.txt

最后一行

awk -F= '{if($NF >= 143 && $NF <= 158){a=$0}} END{print a,NR}' Test.txt

它只打印出保持匹配行和文件的最后一个行号。 如何获得最后一场比赛的行号? 请给我一些建议。

【问题讨论】:

  • 你想要内容和行号,还是只需要行号?

标签: regex bash awk


【解决方案1】:

使用a = NR 而不是a = $0(因为这是您要记住的行号,而不是行本身)。

除此之外,写起来可能会更尴尬

awk -F= '$NF >= 143 && $NF <= 158 { a = NR } END { print a }' Test.txt

{if(){}}有点丑。

【讨论】:

  • 非常感谢您的快速回复!不敢相信,即使它就在我的鼻子底下,我也没有看到它。我会使用你的推荐而不是丑陋的 {if(){}}
  • 您可能希望print a+0 始终打印一个数字,即使没有行匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 2012-11-14
  • 2023-03-30
  • 2020-11-29
  • 1970-01-01
  • 2020-06-05
相关资源
最近更新 更多