我试图在这里和其他来源找到答案,但我不知所措。我正在构建一个小小的awk工具,用于基于控制台的Twitter客户端小工具(https://github.com/jgoerzen/twidge/wiki)
从传入推文的输出中我想做各种很酷的事情,但为了使数据有用,我需要先将时间戳记录成我能处理的格式。
作为参考,这是我目前用命令
获得的输出代码
twidge lsrecent -l | gawk -F"\t" '{print "@"$2 ": " $4 " ("$5")"}'
输出
@nytimes: China Cuts Ties With North Korean Bank http://t.co/N3iljjgGbH (Tue May 07 12:57:04 +0000 2013)
然后我试着变得聪明并且做到了这个
代码
twidge lsrecent -l | gawk -F"\t" '{print "@"$2 ": " $4 " ("strftime("%Y-%m-%d %T",$5)")"}'
但得到了这个不幸的输出
@BloombergNews: HSBC posts bigger-than-estimated increase in first-quarter profit | http://t.co/QraWonRU32 (1970-01-01 01:00:00)
正如我们所看到的,日期转换并不像希望的那样。任何指针都非常受欢迎。它不一定是awk / gawk它只是一个偏好。最终,数据将被放入数据库并在那里工作。
谢谢!
马丁
答案 0 :(得分:1)
你可以使用外部日期命令。(我只是为dateString做例子);
kent$ echo "Tue May 07 12:57:04 +0000 2013"|awk '{"date -d\""$0"\" +\"%F %T\""|getline d; print d}'
2013-05-07 14:57:04
或者获取自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)")"}'