【发布时间】:2020-02-07 13:37:29
【问题描述】:
我正在编写一段 awk 代码来读取这种格式的日志文件:
[03/02/2020 10:01:01] SOME DATA
[03/02/2020 10:05:25] SOME MORE DATA
[03/02/2020 11:54:38] AND YET SOME DATA
等等
我希望通过组合 $1 和 $2 字段中的数据并在它们之间包含一个空格来满足 bash date 命令所需的输入格式来确定纪元时间戳。
这是我写的部分代码:
cmd="date -d" substr($1,2,10) substr($2,1,8) " +%s"
cmd | getline this_date
print this_date
目前,当我运行脚本时,我收到此错误...
date: invalid date ‘03/02/202010:01:01’
date: invalid date ‘03/02/202010:05:25’
date: invalid date ‘03/02/202011:54:38’
等等
所以在我看来我快到了,但正如预期的那样,date 命令需要在日期和时间部分之间留一个空格。
我已经尝试了很多方法来尝试在上面的第一行代码中在substr($1,2,10) substr($2,1,8) 之间编写一个“空格”,但每次都出现错误。
谁能建议最好的方法?
【问题讨论】:
-
您有或可以获得 GNU awk 吗?它具有内置的时间函数,可以使这项任务更容易和更高效,并且由于您使用 GNU 日期作为
-d我怀疑您也有 GNU awk(如果您不确定,请运行awk --version)。您的日志文件中的日期是哪个时区?您将从哪个时区运行该工具? -
I see 到目前为止,您已提出 4 个问题,但尚未接受任何答案。请阅读stackoverflow.com/help/someone-answers,然后重新查看之前的问题,看看是否有您应该接受的答案。