[20231103]輸出倒數第2行.txt

lfree發表於2023-11-05

[20231103]輸出倒數第2行.txt

--//別人要實現的需求,輸出倒數第2行
--//輸出最後一行很容易。
D:\>seq 10| sed -n "$ p"
10

--//linux下sed 可沒有 $-1 這樣的寫法:

D:\>seq 10| sed -n "\$-1 p"
sed: -e expression #1, char 6: Unterminated address regex

D:\>seq 10 | sed  -n "$!p" | sed -n "$p"
9
--//說明:先最後1行不輸出(!的作用),然後透過過濾取最後1行。如果輸出倒數第3行這樣寫不行。

--//既然明確了輸出倒數第2行.可以tac反向輸出後,再輸出正向的第2行。

D:\>seq 10| tac | sed -n "2p"
9

--//還可以利用tail 命令取最後2行,輸出第1行就ok了。

D:\>seq 10| tail -2 | sed -n  "1p"
9

--//順便說一下我在windows下遇到的問題,如果我在其他磁碟機代號下使用tac命令會遇到問題:
E:\>seq 10 | tac
tac: /tmp/taca01292: No such file or directory

--//它需要當前磁碟機代號下存在一個/tmp目錄。
--//從執行效率看使用tail也許更好一些。我個人寫bash shell往往是隨性而寫,很少考慮最佳化健壯性之類的事情。
--//不知道還有什麼更好的方法。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2992946/,如需轉載,請註明出處,否則將追究法律責任。

相關文章