“安全”地获取从底部开始的第 n 行

Dan*_*iel 2 bash shell tail head

给定一个文件:

dept4.abc.edu
dept3.abc.edu
dept2.abc.edu
dept1.abc.edu
Run Code Online (Sandbox Code Playgroud)

我知道如何使用以下命令获取从底部开始的第三行:

tail -3 file | head -1
Run Code Online (Sandbox Code Playgroud)

只要文件长度大于或等于 3 行就可以[ $(wc -l < file) -gt 3 ]。所以tail -4 file | head -1仍然很好,但tail -5 file | head -1不是我真正想要的。

我想知道是否有更好的方法和更干净的方法来安全地获取第 n 行,安全地说,我的意思是如果它不存在,只需返回一个空字符串或错误。有任何想法吗?

Fre*_*ihl 5

有很多方法可以从文件中获取第 n 行,请参见例如Bash tool to get nth line from a file

获取文件底部第 n 行的最简单方法是使用tac( 的逆cat)来反转文件。像这样的东西:

tac file | sed '3q;d'
Run Code Online (Sandbox Code Playgroud)