为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

猛跑小猪 2019-11-23 13:02:54
我最终用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。


查看完整回答
反对 回复 2019-11-23
?
一只萌萌小番薯

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


查看完整回答
反对 回复 2019-11-23
?
郎朗坤

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


查看完整回答
反对 回复 2019-11-23
  • 3 回答
  • 0 关注
  • 503 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信