[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博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2992946/ ,如需转载,请注明出处,否则将追究法律责任。