[英]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.