从多个文件返回第 N 行

Returning Nth line from multiple files

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

对于单个文件,我使用

    awk 'NR==5' file.csv

对于多个文件,我想

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

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

谢谢!

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

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

如果您需要将输出输出到一个输出文件中,那么也可以在上述命令的最后附加 > output_file

解释:

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

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

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