转到文件行数减去“n”的行

转到文件行数减去“n”的行

假设我想转到文件的最后 80 行celery.log,但我不知道它有多少行。

与该命令等效tail,但转到从末尾算起的第 80 行而不是默认值。

我该怎么做?

答案1

echo '$-79p' | ed -s celery.log

这将在名为 的文件上运行ed脚本,该脚本将显示从文件最后一行开始的第 79 行。$-79pcelery.log

在理解此处字符串的 shell 中:

ed -s celery.log <<<'$-79p'

如果文件少于 80 行,ed将返回错误(?其标准错误流上的字符)并且在标准输出流上不产生任何输出。

答案2

tail -n 80 celery.log | head -n 1

这将显示最后 80 行中的第一行(如果文件少于 80 行,它将显示文件的第一行)。

答案3

哟可以这样做:

tac celery.log | sed -n '80p'

相关内容