如何在bash中打印文件末尾的第n行?

use*_*171 5 bash sed tail

有没有办法打印文件的第n行,从文件的后面开始计算?

我知道如何从文件的前面做到这一点,但从文件的后面做这件事似乎更棘手.

Kev*_*vin 9

快速简便的方法是tail -n $n file | head -n 1.

一个更有趣的方式awk是:

awk -v n=$n '{x[NR%n]=$0}END{print x[(NR+1)%n]}' file
Run Code Online (Sandbox Code Playgroud)

如果你有少于n行,该tail | head方法将打印文件的第一行,awk方式将打印一个空行.


Ray*_*oal 5

快速而肮脏,从最后的第100行:

tail -n 100 yourfile | head -n 1
Run Code Online (Sandbox Code Playgroud)

如果文件少于100行,您将获得该文件的第一行.