Time Awk ISO至新纪元
我正在使用Time Awk ISO至新纪元,time,awk,iso,epoch,Time,Awk,Iso,Epoch,我正在使用awk(mawk)在bash中编写一个脚本,我想将系统命令的输出返回给awk 我创建了一个名为的变量,它是ISO格式的:2013-12-26T17:03:05Z,我想将它从ISO转换为epoch。我可以运行这行created\u epoch=system(“date+\%s-d”created),它将输出打印到终端,但是变量created\u epoch等于0,而不是epoch时间 有人知道如何在awk中将ISO格式转换为epoch格式吗 谢谢 这样做: created_epoch=$
awk
(mawk)在bash中编写一个脚本,我想将系统命令的输出返回给awk
我创建了一个名为的变量,它是ISO格式的:2013-12-26T17:03:05Z
,我想将它从ISO转换为epoch。我可以运行这行created\u epoch=system(“date+\%s-d”created)
,它将输出打印到终端,但是变量created\u epoch
等于0
,而不是epoch时间
有人知道如何在awk中将ISO格式转换为epoch格式吗
谢谢 这样做:
created_epoch=$(date +\%s -d "$created")
echo $created_epoch
1388077385
epoch = exec("date +%s -d \"<ISO DATE>\"")
尝试从管道中将getline
用于变量,而不是system
cmd="date +\%s -d "created; cmd | getline current_time
system
命令返回执行的命令返回的退出状态作为其值。
awk中的系统
命令与C中的命令一样,返回命令的退出状态,而不是所述命令的输出。正如其他人所建议的,您最好的选择是使用
不久前,我遇到了一个类似的问题,并使用了自己的exec
函数,如下所示:
# get the output of a command
function exec(cmd, data) {
while ((cmd | getline data) > 0) printf("%s", data);
close(cmd);
}
然后使用上面定义的函数,您应该执行以下操作:
created_epoch=$(date +\%s -d "$created")
echo $created_epoch
1388077385
epoch = exec("date +%s -d \"<ISO DATE>\"")
+1用于解释和多行解决方案(尽管@Håkon Hægland的单行解决方案在这种情况下就可以了)。我认为这是如何在shell脚本中实现的,但在shell脚本中的AWK脚本中不起作用。