获取N';linux中多个文件的第行

获取N';linux中多个文件的第行,linux,csv,awk,sed,echo,Linux,Csv,Awk,Sed,Echo,我要完成的任务是,我有这样的文件: test1.csv test2.csv test3.csv等 我想得到每个文件的第三行。现在,我可以使用awk或sed之类的工具获得第三行 echo | awk'FNR==3{print;exit}'test1.csv>>last_file.csv或使用sed或tail 但是当我尝试在多个文件上执行此操作时,它无法获取行。我想这样做 echo | awk'FNR==3{打印;退出}测试*.csv>>last_file.csv 我怎样才能做到这一点 谢谢。您应该

我要完成的任务是,我有这样的文件:

test1.csv test2.csv test3.csv等

我想得到每个文件的第三行。现在,我可以使用awk或sed之类的工具获得第三行

echo | awk'FNR==3{print;exit}'test1.csv>>last_file.csv
或使用sed或tail

但是当我尝试在多个文件上执行此操作时,它无法获取行。我想这样做

echo | awk'FNR==3{打印;退出}测试*.csv>>last_file.csv

我怎样才能做到这一点

谢谢。

您应该使用

awk 'FNR == 3 { print; nextfile }' test*.csv >> last_file.csv
问题是,当您使用
exit
时,它会阻止awk完全处理输入。下一个文件告诉awk停止处理当前文件并转到下一个文件。使用时不需要使用
echo
命令

请在此处阅读更多信息:


清除无用的
回音
、不正确的
退出
和冗余的
打印

awk 'FNR == 3' test*.csv
这可能适用于您(GNU-sed):


如果你想在所有文件的目录和它的子目录等

shopt -s globstar
awk 'FNR == 3' **/test*.csv

你能给出你得到的输入和输出吗?你是说,如果我在多个文件上尝试它,输出吗?谢谢,这一个更好。@mau5这实际上效率更低,因为它处理整个文件,其中,由于nextfile命令允许我们在获得所需行后跳到下一个文件。效率是在必要时需要解决的问题,在脚本中加入性能改进,使其变得不那么简洁和不可移植,这毫无意义,因为它几乎肯定会像OPs真实文件一样在一眨眼之间运行(当人们有异常大的文件要处理时,他们总是告诉我们这一点)如果性能是一个问题,那么我们可以讨论选择和权衡。谢谢你的建议,我很感激。对于我的任务,该文件仅包含3或4行。但是,如果有人有一个相当大的文件,我希望他们会考虑“Nestfile”作为答案。抱歉搞混了,我应该在我的问题中提到。
shopt -s globstar
awk 'FNR == 3' **/test*.csv