在Linux中获得多个文件的第N行

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

test1.csv test2.csv test3.csv等…

我想要得到每个文件的第三行。 现在,我可以使用awksed来获得第三条线

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

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

echo | awk 'FNR == 3 { print; exit }' test*.csv >> last_file.csv

我怎样才能做到这一点?

谢谢。

摆脱无用的echo ,不正确的exit和冗余print

 awk 'FNR == 3' test*.csv 

你应该使用

 awk 'FNR == 3 { print; nextfile }' test*.csv >> last_file.csv 

问题是,当你使用exit ,它完全停止awk处理输入。 nextfile告诉awk停止处理当前文件并转到下一个文件。 您正在使用的echo命令是没有必要的。

在这里阅读更多:

http://www.gnu.org/software/gawk/manual/html_node/Nextfile-Statement.html

这可能适用于你(GNU sed):

 sed -sn 3p test*.csv >> last_file.csv