我想显示我的日志文件的最后10行,从最后一行开始 - 就像普通的日志阅读器一样。我认为这将是tail命令的变体,但我无法在任何地方找到它。
答案 0 :(得分:46)
GNU(Linux) uses the following:
tail -n 10 <logfile> | tac
tail -n 10 <logfile>
打印出日志文件的最后10行,而tac
(cat拼写向后)会反转订单。
tail
的 BSD(OS X)使用-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
注意: BSD -r
选项“GNU manual states只能反转最多与其缓冲区一样大的文件,通常为32 KiB” tac
更可靠。如果缓冲区大小有问题并且您无法使用tac
,则可能需要考虑使用在bash中编写功能的@ata's answer。
答案 1 :(得分:13)
tac
做你想要的。它与cat
相反。
tail -10 logfile | tac
答案 2 :(得分:8)
我最终使用了tail -r
,它在我的OSX上运行(tac
没有)
tail -r -n10
答案 3 :(得分:2)
你可以用纯粹的bash做到这一点:
#!/bin/bash
readarray file
lines=$(( ${#file[@]} - 1 ))
for (( line=$lines, i=${1:-$lines}; (( line >= 0 && i > 0 )); line--, i-- )); do
echo -ne "${file[$line]}"
done
./ tailtac 10&lt; somefile
./ tailtac -10&lt; somefile
./ tailtac 100000&lt; somefile
./ tailtac&lt; somefile
答案 4 :(得分:2)
这是以相反顺序打印输出的完美方法
tail -n 10 <logfile> | tac