linux - 在 Bash 中从最后到第一个输出文件行

我想显示我的日志文件的最后 10 行,从最后一行开始——就像普通的日志阅读器一样。我认为这将是 tail 命令的变体,但我在任何地方都找不到。

最佳答案

GNU (Linux) uses the following :

tail -n 10 <logfile> | tac

tail -n 10 <logfile>打印出日志文件的最后 10 行和 tac (cat 向后拼写)颠倒顺序。

BSD (OS X)tail使用 -r选项:

tail -r -n 10 <logfile>

对于这两种情况,您可以尝试以下方法:

if hash tac 2>/dev/null; then tail -n 10 <logfile> | tac; else tail -n 10 -r <logfile>; fi

注意: GNU manual states BSD -r选项“只能反转最多与其缓冲区一样大的文件,通常为 32 KiB”和 tac更可靠。如果缓冲区大小有问题并且您不能使用 tac ,您可能需要考虑使用 @ata's answer它在 bash 中编写功能。

https://stackoverflow.com/questions/8017456/

相关文章:

c - 无论如何要从命令行获取c程序的返回值?

xml - CHMOD 755 与 750 权限集之间的差异

Linux 上的 C++ 开发 - 我从哪里开始?

linux - Unix管道到ls

linux - 如何在 unix 中解压 tar.bz 文件?

linux - 如何在 Bash 字符串中添加新行?

linux - 检查 VT-x 是否已激活而无需在 Linux 中重新启动?

linux - 内联 if shell 脚本

c - 如何在 Linux 中创建高分辨率计时器来测量程序性能?

linux - 是否可以在 XTerm 或 Konsole 中使 stdout 和 stderr 输