如何按时间拖尾日志文件?

use*_*129 8 linux command-line bash shell-script tail

说我的日志文件(log.txt)是这样的

2014-01-01 22:30:30 something happened....
2014-01-01 22:30:31 something happened....
2014-01-01 22:30:41 something happened....
Run Code Online (Sandbox Code Playgroud)

我想拖尾这个文件以显示最后一小时的日志,并继续拖尾..

IE

tail <some magic to specify last 1 hour> -f log.txt
Run Code Online (Sandbox Code Playgroud)

然后输出是

2014-01-01 21:30:41 something happened....
...
2014-01-01 22:30:30 something happened....
2014-01-01 22:30:31 something happened....
2014-01-01 22:30:41 something happened....
Run Code Online (Sandbox Code Playgroud)

有没有工具可以做到这一点?

rAl*_*len 8

您可以在 oneliner 中使用 grep 和 tail 的组合。

grep "2014-01-01 21:" log.txt; tail -f log.txt
Run Code Online (Sandbox Code Playgroud)

它将打印从那个小时开始的所有内容,并继续拖尾。

或者您也可以使用 awk 打印从某个小时开始到文件结束的所有内容,并在其后继续拖尾,这将允许您在需要时拖尾几个小时。

awk '/2014-01-01 21:/' log.txt; tail -f log.txt
Run Code Online (Sandbox Code Playgroud)