将时间戳附加到 tail -f 结果

719*_*016 15 tail bash-scripting

我想在从“tail -f 输出文件”出来的每一行前面打印一个时间戳,这样我就知道每行什么时候打印出来。像:

[...]
20110617_070222:这里打印的结果
20110617_070312:这里打印的结果
20110617_070412:这里打印的结果
20110617_070513:结果打印在这里
[...]

有任何想法吗?

小智 19

它可能不会比这更短:

tail -f outputfile | xargs -IL date +"%Y%m%d_%H%M%S:L"
Run Code Online (Sandbox Code Playgroud)

请注意,我使用了您的问题建议的时间戳格式,但您可以自由使用该date命令支持的任何内容(标准 BSD 和 GNU 日期支持格式语法)。


Fli*_*mzy 6

编写一个简单的脚本来做到这一点。这是 perl 中的一个示例:

#!/usr/bin/perl
while(<>) {
    print localtime . ": $_";
}
Run Code Online (Sandbox Code Playgroud)

要使用该脚本,只需通过它管道您的尾部输出:

tail -f outputfile | ./prepend_timestamp.pl
Run Code Online (Sandbox Code Playgroud)

您也可以内联进行:

tail -f outputfile | perl -pe '$_ = localtime.": $_"'
Run Code Online (Sandbox Code Playgroud)