是否有Unix实用程序在stdin之前添加时间戳?

我最终用Python为此编写了一个快速的小脚本,但是我想知道是否有一个工具可以将文本填充到每行的前面,在我的特定情况下是时间戳,您可以在其中添加文本。理想情况下,使用方式如下:


cat somefile.txt | prepend-timestamp

(在您回答sed之前,我尝试过此操作:


cat somefile.txt | sed "s/^/`date`/"

但这仅在执行sed时对date命令执行一次评估,因此同一时间戳错误地附加到每一行。)


猛跑小猪
浏览 506回答 3
3回答

MYYA

可以尝试使用awk:<command> | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; fflush(); }'您可能需要确保<command>产生行缓冲输出,即在每行之后刷新其输出流。时间戳awk添加将是该行的结尾出现在其输入管道上的时间。如果awk显示错误,请尝试gawk。

一只萌萌小番薯

tsfrom moreutils将在您输入的每一行前面加上一个时间戳。您也可以使用strftime对其进行格式化。$ echo 'foo bar baz' | tsMar 21 18:07:28 foo bar baz$ echo 'blah blah blah' | ts '%F %T'2012-03-21 18:07:30 blah blah blah$&nbsp;要安装它:sudo apt-get install moreutils

郎朗坤

注解,可以通过该链接获得,也可以annotate-output在Debian devscripts软件包中获得。$ echo -e "a\nb\nc" > lines$ annotate-output cat lines17:00:47 I: Started cat lines17:00:47 O: a17:00:47 O: b17:00:47 O: c17:00:47 I: Finished with exitcode 0
打开App,查看更多内容
随时随地看视频慕课网APP