Date AWK转换a";“长日期”;迄今为止
我试图从这里和其他来源找到答案,但我不知所措。我正在构建一个小的awk工具,用于基于控制台的twitter客户端twidge() 从传入tweet的输出中,我想做各种很酷的事情,但是为了使数据有用,我需要首先将时间戳转换为我可以处理的格式 作为参考,这里是我当前通过命令获得的输出 代码 输出Date AWK转换a";“长日期”;迄今为止,date,twitter,awk,gawk,Date,Twitter,Awk,Gawk,我试图从这里和其他来源找到答案,但我不知所措。我正在构建一个小的awk工具,用于基于控制台的twitter客户端twidge() 从传入tweet的输出中,我想做各种很酷的事情,但是为了使数据有用,我需要首先将时间戳转换为我可以处理的格式 作为参考,这里是我当前通过命令获得的输出 代码 输出 @nytimes: China Cuts Ties With North Korean Bank http://t.co/N3iljjgGbH (Tue May 07 12:57:04 +0000 201
@nytimes: China Cuts Ties With North Korean Bank http://t.co/N3iljjgGbH (Tue May 07 12:57:04 +0000 2013)
然后我试着变得聪明,并做到了这一点
代码
但是得到了这个不幸的结果
@BloombergNews: HSBC posts bigger-than-estimated increase in first-quarter profit | http://t.co/QraWonRU32 (1970-01-01 01:00:00)
正如我们所看到的,日期转换并不像我们希望的那样。任何指针都是最受欢迎的。它不必是awk/gawk,它只是一种偏好。最终数据将被放入数据库并在那里进行处理
谢谢
Martin您可以使用外部日期命令(我只是为dateString做个例子) 或者从1970-01-01 utc开始以秒为单位获取日期,然后使用awk的strftime:
awk '{"date -d\""$0"\" +\"%s\""|getline d; print strftime("%Y-%m-%d %T",d)}'
编辑
twidge lsrecent -l | gawk -F"\t" '{"date -d\""$5"\" +\"%s\""|getline d;print "@"$2 ": " $4 " ("strftime("%Y-%m-%d %T",d)")"}'
您可以使用外部日期命令(我只是以dateString为例) 或者从1970-01-01 utc开始以秒为单位获取日期,然后使用awk的strftime:
awk '{"date -d\""$0"\" +\"%s\""|getline d; print strftime("%Y-%m-%d %T",d)}'
编辑
twidge lsrecent -l | gawk -F"\t" '{"date -d\""$5"\" +\"%s\""|getline d;print "@"$2 ": " $4 " ("strftime("%Y-%m-%d %T",d)")"}'
谢谢你的意见,我试过了,但事情就是这样。
@ReutersBiz:OfficeMax股价上涨,因为特别股息超过了利润损失http://t.co/LlR6yK4N8l(date-d“Tue May 07 13:30:32+0000 2013”+%F%T)
来自命令:~/scripts$twidge lsrecent-l | gawk-F“\T”{print”@“$2”:“$4”(“date-d\$5”+\%F%T\”)“
我的代码中有一个getline
。你只是将一个字符串与date-d….
连接起来,没有执行它。好的,那么我的问题是如果你真的想用awk解析日期字符串并使用mktime(),那么如何在awk脚本中执行date
)
函数,它也能工作。使用date
cmd更简单。(我的意见。)我让您的示例自然运行。但是在我想要内联转换的脚本中,我不知道如何实现相同的代码。感谢您的输入,我尝试了,但事情就是这样发生的@ReutersBiz:OfficeMax由于特别股息超过利润损失而分享了更多http://t.co/LlR6yK4N8l(日期-d“2013年5月7日星期二13:30:32+0000”+%F%T))
从命令:~/scripts$twidge lsrecent-l|gawk-F“\t”{print”@“$2”:“$4”(“日期-d\”“$5”\+\%F%t\”)“
我的代码中有一个getline
。你只是将一个字符串与date-d….
连接起来,没有执行它。好的,那么我的问题是如果你真的想用awk解析日期字符串并使用mktime(),那么如何在awk脚本中执行date
)
函数也可以使用。使用date
cmd更简单。(我的意见)。我让您的示例自然工作。但是在我的脚本中,我不知道如何实现相同的代码。
twidge lsrecent -l | gawk -F"\t" '{"date -d\""$5"\" +\"%s\""|getline d;print "@"$2 ": " $4 " ("strftime("%Y-%m-%d %T",d)")"}'