簡體   English   中英

在linux中獲取N個行的多個文件

[英]Get N'th line of multiple files in linux

我想要完成的任務是,我有這樣的文件:

test1.csv test2.csv test3.csv等...

我想獲得每個文件的第3行。 現在,我可以使用awk獲得第3行,或者像sed一樣

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

如果要在目錄中的所有文件和子目錄中執行此操作,依此類推。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM