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

Yar*_*rin 34 linux bash shell tail

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

Ric*_*ith 49

GNU(Linux) 使用以下内容:

tail -n 10 <logfile> | tac
Run Code Online (Sandbox Code Playgroud)

tail -n 10 <logfile>打印出日志文件的最后10行,tac(cat拼写向后)反转顺序.

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

tail -r -n 10 <logfile>
Run Code Online (Sandbox Code Playgroud)

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

if hash tac 2>/dev/null; then tail -n 10 <logfile> | tac; else tail -n 10 -r <logfile>; fi
Run Code Online (Sandbox Code Playgroud)

注意:所述的GNU手册指出的是,BSD -r选项"只能扭转至多一样大其缓冲器,其通常是32 KIB文件",并且tac更加可靠.如果缓冲区大小有问题并且您无法使用tac,您可能需要考虑使用@ ata的答案,该答案在bash中编写功能.


dry*_*dam 13

tac做你想要的.这是相反的cat.

tail -10 logfile | tac


Yar*_*rin 8

我最终使用了tail -r,这对我的OSX有效(tac不)

tail -r -n10
Run Code Online (Sandbox Code Playgroud)

  • @KarlMorrison这对非BSD尾部命令不起作用.有关更多帮助,请参阅[我的回答](http://stackoverflow.com/a/8017478/616644) (2认同)