使用awk将日期文件转换为unix时间

时间:2014-08-28 02:55:05

标签: unix awk

我有一个包含日期和lat long的文件,我想将UTC中的日期转换为unix时间。我决定在awk脚本中使用unix date函数来执行此操作。我试过了:

awk 'BEGIN {t=$3; c="date -j -f %Y%j%H%M%S "t" +%s"; c|getline; close( c ); print $1, $2, c; }' test.txt

其中t是我文件中的第三行,格式为2014182120311.我是awk / scripting的新手,不确定是否可以将awk变量嵌入到awk行内的unix命令中。

当我运行脚本时,我收到错误:

usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
        [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]

所以我认为我没有正确定义“t”。非常感谢任何帮助!

在旁注 - 我尝试了mktime和其他awk时间功能,但它们对我不起作用我相信因为我没有gawk。

1 个答案:

答案 0 :(得分:0)

您是否可以选择安装gawk?你以后会感谢自己。

BEGIN部分在任何文件打开之前执行,因此$3(从当前文件读取的当前记录的第3个字段)在该部分中没有意义,因此{{1}只需将变量t=$3设置为空字符串。

你不想打印命令,c,你想要打印t读取的执行命令的结果,但当你使用无向getline它会覆盖$ 0,$ 1等所以你应该把结果保存在var中(参见http://awk.info/?tip/getline)。

你可能想要这样的东西:

getline

但如果没有,请发布一些示例输入和预期输出,以便我们为您提供帮助。