在Bash中输出从上到下的文件行

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

Solutions Collecting From Web of "在Bash中输出从上到下的文件行"

GNU(Linux) 使用以下内容 :

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 

注: GNU手册指出 ,BSD -r选项“只能反转最多与其缓冲区一样大的文件,典型值为32 KiB”, tac更可靠。 如果缓冲区大小是一个问题,你不能使用tac ,你可能要考虑使用@ ata的答案 ,在bash中写入功能。

tac做你想要的。 这是cat的反面。

tail -10 logfile | tac

我结束了使用tail -r ,这对我的OSX( tac不)

 tail -r -n10 

这是以相反顺序打印输出的完美方法

 tail -n 10 <logfile> | tac 

你可以用纯粹的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 <somefile

./tailtac -10 <somefile

./tailtac 100000 <somefile

./tailtac <somefile