假设我想转到文件的最后 80 行celery.log
,但我不知道它有多少行。
与该命令等效tail
,但转到从末尾算起的第 80 行而不是默认值。
我该怎么做?
答案1
echo '$-79p' | ed -s celery.log
这将在名为 的文件上运行ed
脚本,该脚本将显示从文件最后一行开始的第 79 行。$-79p
celery.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'