加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何将每个行的时间戳附加到grep中?

发布时间:2020-12-13 17:20:28 所属栏目:PHP教程 来源:网络整理
导读:我有一个无限的数据流来自记录器,我正在为grep管道.我想将grep的输出保存到文件中,但还要在每行的开头(行出现的时间)中包含一个时间戳.有没有一种简单的方法来实现这一目标?假设我无法更改记录器进程的输出. 解决方法 您可以使用sed和date附加静态时间戳:
我有一个无限的数据流来自记录器,我正在为grep管道.我想将grep的输出保存到文件中,但还要在每行的开头(行出现的时间)中包含一个时间戳.有没有一种简单的方法来实现这一目标?假设我无法更改记录器进程的输出.

解决方法

您可以使用sed和date附加静态时间戳:

... | sed "s/^/$(date) /" >> output.txt

或者,如果您需要实时时间戳,请使用gawk的strftime function:

... | gawk '{ print strftime(),$0 }'

您可以定义自己喜欢的格式:

... | gawk '{ print strftime("%Y-%m-%d %H:%M:%S"),$0 }'

如果缓冲是个问题,请不要忘记每行flush:

... | awk '{ print strftime("%Y-%m-%d %H:%M:%S"),$0; fflush() }'

或者,使用unbuffer:

unbuffer ... | awk '{ print strftime("%Y-%m-%d %H:%M:%S"),$0 }'

如果你没有gawk,你还有其他几个选择:

(a)安装ts(自moreutils起):

... | ts '%F %T'

(b)使用perl:

... | perl -pe 's/^/localtime . " "/e'

或格式化:

... | perl -MPOSIX -pe 's/^/strftime("%Y-%m-%d %H:%M:%S",localtime) . " "/e'

如果您需要格式化为您的语言环境的GMT,请不要忘记您可以使用gmtime而不是localtime.

(c)Ask a question.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读