【问题标题】:Bash: Obtain epoch time from date time string taken from file using awkBash:使用awk从文件中获取的日期时间字符串获取纪元时间
【发布时间】:2018-11-24 09:16:14
【问题描述】:

首先,对不起,因为标题可能不是一个好标题。实在想不出什么好标题,但我会尽量在这里解释,所以就这样吧,

我有一个名为 timeInfo 的文件,其中包含以下格式的日期时间字符串,

2018-06-05 00:35:51 Controller shutdown process initiated
2018-06-05 05:32:22 Controller startup process initiated
...
...

现在我要做的是,我需要得到这个时间并将其转换为EPOCH并将其存储到一个临时文件tempFile中,到目前为止我尝试的是.. .

//$file points to **timeInfo** file
echo `grep 'Controller startup' $file  | date -d "`awk '{ print $1,$2 }'`" >> $TEMP_FILE`

使用这个我得到以下错误,

命令替换:第 73 行:在寻找匹配的 `"' 时出现意外的 EOF

然后我尝试了另一种方法并使用了以下代码,

echo `grep "Controller startup" $file  | awk '{print $1,$2}' >> $TEMP_FILE`

有了这个我得到一个文件 tempFile 包含以下信息,

2018-06-06 00:35:31

2018-06-06 00:51:32

这似乎好多了,但我需要在 EPOCH 中拥有它!有没有办法可以更改上述脚本以在 tempFile 中以 EPOCH 格式保存日期时间字符串。

希望听到您的建议!谢谢你

【问题讨论】:

标签: bash date awk epoch


【解决方案1】:

这可能是你想要的,需要gawk

$ awk '{t=$1 FS $2; gsub(/[-:]/," ",t); print mktime(t)}' file

1528173351
1528191142

或者这个

$ awk '/Controller (startup|shutdown)/{t=$1 FS $2; 
                                       gsub(/[-:]/," ",t); 
                                       print mktime(t)}' file

【讨论】:

    【解决方案2】:
    cat logfile|awk '{print($1,$2)}' |xargs -n 1 -I_ date +'%s' --date=_
    

    收藏文件。然后 awk 前两个字段。并使用“xargs -n 1”一次将一个数据传递给日期命令,并使用 %s 获取纪元。

    【讨论】:

    • awk 可以自己打开文件。谷歌 UUOC。
    猜你喜欢
    • 1970-01-01
    • 2021-06-10
    • 2013-04-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 2012-09-08
    相关资源
    最近更新 更多