我最终用Python为此编写了一个快速的小脚本,但是我想知道是否有一个工具可以将文本填充到每行的前面,在我的特定情况下是时间戳,您可以在其中添加文本。理想情况下,使用方式如下:cat somefile.txt | prepend-timestamp(在您回答sed之前,我尝试过此操作:cat somefile.txt | sed "s/^/`date`/"但这仅在执行sed时对date命令执行一次评估,因此同一时间戳错误地附加到每一行。)
3 回答
MYYA
TA贡献1868条经验 获得超4个赞
可以尝试使用awk:
<command> | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; fflush(); }'
您可能需要确保<command>产生行缓冲输出,即在每行之后刷新其输出流。时间戳awk添加将是该行的结尾出现在其输入管道上的时间。
如果awk显示错误,请尝试gawk。
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
tsfrom moreutils将在您输入的每一行前面加上一个时间戳。您也可以使用strftime对其进行格式化。
$ echo 'foo bar baz' | ts
Mar 21 18:07:28 foo bar baz
$ echo 'blah blah blah' | ts '%F %T'
2012-03-21 18:07:30 blah blah blah
$
要安装它:
sudo apt-get install moreutils
郎朗坤
TA贡献1921条经验 获得超9个赞
注解,可以通过该链接获得,也可以annotate-output在Debian devscripts软件包中获得。
$ echo -e "a\nb\nc" > lines
$ annotate-output cat lines
17:00:47 I: Started cat lines
17:00:47 O: a
17:00:47 O: b
17:00:47 O: c
17:00:47 I: Finished with exitcode 0
添加回答
举报
0/150
提交
取消