Awk 从多个文件返回第n行

Awk 从多个文件返回第n行,awk,git-bash,Awk,Git Bash,给定一个包含多个.csv文件的文件夹,我想返回每个文件的第n行并写入一个新文件 对于单个文件,我使用 awk 'NR==5' file.csv 对于多个文件,我想 ls *.csv | xargs awk 'NR==5' …但是,这仅返回列表中第一个文件的第5行 谢谢 请尝试以下内容并让我知道这是否对您有帮助(我相信GNUawk应该会有帮助): 若您需要将输出放入一个单独的输出文件中,则在上述命令的最后附加>output\u file 说明: FNR==5:检查当前输入文件的

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

对于单个文件,我使用

    awk 'NR==5' file.csv
对于多个文件,我想

    ls *.csv | xargs awk 'NR==5'
…但是,这仅返回列表中第一个文件的第5行


谢谢

请尝试以下内容并让我知道这是否对您有帮助(我相信GNU
awk
应该会有帮助):

若您需要将输出放入一个单独的输出文件中,则在上述命令的最后附加
>output\u file

说明:

FNR==5
:检查当前输入文件的行号是否为第5行,然后执行后面提到的操作

{print;}
print
awk
开箱即用的关键字,用于打印当前行,因此只打印第5行


nextfile
:就名称本身而言,
nextfile
显然将跳过当前输入文件中的所有行(因为我最后给出了*.csv,所以这意味着它将通过1将所有csv文件传递给
awk
1)这将为我们节省时间,因为我们不想读取输入文件中的条目,我们只需要第5行,就得到了它。

成功了!非常感谢-你能解释一下为什么我需要它吗?@Mikeec,现在也添加了解释,让我知道这是否对你有帮助。完美-现在完全跟踪,再次感谢你的帮助@Mikeec,很高兴它帮助了您,看看我们是如何感谢堆栈内溢出的,您想要
FNR==5
:这是当前文件的记录编号
NR
是输入流中看到的所有记录的记录编号。
awk 'FNR==5{print;nextfile}' *.csv