Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date AWK转换a";“长日期”;迄今为止_Date_Twitter_Awk_Gawk - Fatal编程技术网

Date AWK转换a";“长日期”;迄今为止

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

我试图从这里和其他来源找到答案,但我不知所措。我正在构建一个小的awk工具,用于基于控制台的twitter客户端twidge(‎)

从传入tweet的输出中,我想做各种很酷的事情,但是为了使数据有用,我需要首先将时间戳转换为我可以处理的格式

作为参考,这里是我当前通过命令获得的输出

代码

输出

@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)")"}'