【问题标题】:How to get the propper line when using awk over a bunch of files? [duplicate]在一堆文件上使用awk时如何获得propper行? [复制]
【发布时间】:2020-04-13 19:47:35
【问题描述】:

我有一堆降价文件,我想获取文件名和模式发生的行号。我尝试过类似的方法:

awk '/pattern/ && NR > 7 {print FILENAME, NR, $0}' *.md

发生的情况是 awk 将所有文件视为一个文件并给出错误的编号。我也使用 zsh 并且我不知道我错过了什么。我已经在网上搜索过,没有结果。

列出文件的条件是模式出现在所有markdown文件的第7行之后。

【问题讨论】:

  • awk 具有内部变量 NR,它是当前处理的所有记录的总数 record number,在多个文件中累积。还有一个内部变量FNR,它是当前文件的记录号。您感兴趣的是后者。

标签: awk


【解决方案1】:

使用FNR,即当前输入文件的记录(行)号。

awk '/pattern/ && FNR > 7 {print FILENAME, FNR, $0}' *.md

【讨论】:

  • 我不知道 FN 和 FNR 之间的确切区别,它是巨大的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-14
  • 1970-01-01
  • 2014-11-17
  • 2019-06-21
  • 2011-07-24
  • 2019-05-20
  • 1970-01-01
相关资源
最近更新 更多