【问题标题】:Returning Nth line from multiple files从多个文件返回第 N 行
【发布时间】:2018-02-11 23:03:43
【问题描述】:

给定一个包含多个 .csv 文件的文件夹,我想从每个文件返回第 N 行并写入一个新文件。

对于单个文件,我使用

    awk 'NR==5' file.csv

对于多个文件,我想

    ls *.csv | xargs awk 'NR==5'

...但是只返回列表中第一个文件的第 5 行。

谢谢!

【问题讨论】:

  • 你想要FNR == 5:这是当前文件的记录号。 NR 是输入流中看到的所有记录的记录号。

标签: awk git-bash


【解决方案1】:

您能否尝试关注并告诉我这是否对您有帮助(GNU awk 我相信应该会有所帮助):

awk 'FNR==5{print;nextfile}' *.csv

如果您需要将输出保存到单个输出文件中,请在上述命令的最后附加 > output_file

解释:

FNR==5: 在这里检查当前 Input_file 的行号是否为第 5 行,然后执行后面提到的操作。

{print;}: printawk 开箱即用的关键字,它打印当前行,因此它只会打印第 5 行。

nextfile: 正如名称本身一样,nextfile 将跳过当前 Input_file 中的所有行(因为我最后给出了 *.csv 所以这意味着它将所有 csv 文件传递​​给 awk 1通过 1) 它会为我们节省时间,因为我们不想读取 Input_file 条目,我们只需要第 5 行就可以了。

【讨论】:

  • 成功了!非常感谢 - 你有没有机会解释一下为什么这正是我需要它做的?
  • @MikeeeeeeeyC,现在也添加了解释,如果对你有帮助,请告诉我。
  • 完美 - 现在完全跟踪,再次感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 2020-10-03
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
相关资源
最近更新 更多