簡體   English   中英

從bash的STDOUT移除n行

[英]remove n lines from STDOUT on bash

您是否有任何bash解決方案可從stdout中刪除N行?

像“ head”命令一樣,僅打印最后一行N

bash上的簡單隔離:

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

但是我需要復制sed命令N次

有更好的解決方案嗎? 除了awk,python等...

使用帶有負數的head 在我的示例中,它將打印所有行,但最后3行:

head -n -3 infile

如果head -n -3文件名在您的系統上不起作用(例如我的),您也可以嘗試以下方法(也可以使用別名或在.bashrc中創建函數)

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

其中文件名和上面的3分別是您的文件和行數。

tail命令可以從Mac OS / BSD上的文件末尾跳過。 tail接受+/-前綴,這有助於下面的表達,從頭開始顯示3行

tail -n +3 filename.ext

或者,要從文件末尾跳過行,請改用-前綴。

tail -n -3 filenme.ext

通常, tail的默認值是-前綴,因此從文件末尾開始計數。 在這里看到另一個問題的類似答案: 打印文件,跳過Bash中的前X行

暫無
暫無

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

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