2012-08-31 69 views
0

你有任何bash解決方案從stdout中刪除N行嗎?在bash上從STDOUT中刪除n行

像一個 '頭' 命令,打印所有行,只除了最後N

巴蜀簡單孤子:

找到./test_dir/ | sed'$ d'| sed'$ d'| sed'$ d'| ...

,但我需要複製sed命令N次

任何更好的解決方案? 除了awk,python等...

+0

[打印文件在Bash中跳過X行]的可能的重複(http://stackoverflow.com/questions/604864/print-a-file-skipping-x-lines-in-bash) –

+0

該鏈接適用於跳過前X行,而不是最後X行。 – chepner

回答

5

使用head與負數。在我的例子,將打印所有行,但最後3:

head -n -3 infile 
1

如果頭-n -3 filename不您的系統(像我)上工作,你也可以試試下面的辦法(也許它的別名或創建在你的.bashrc的函數)

head -`echo "$(wc -l filename)" | awk '{ print $1 - 3; }'` filename 

凡文件名和以上分別是文件和行數。