我有一个包含日期和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。
答案 0 :(得分:0)
您是否可以选择安装gawk
?你以后会感谢自己。
BEGIN
部分在任何文件打开之前执行,因此$3
(从当前文件读取的当前记录的第3个字段)在该部分中没有意义,因此{{1}只需将变量t=$3
设置为空字符串。
你不想打印命令,c,你想要打印t
读取的执行命令的结果,但当你使用无向getline
它会覆盖$ 0,$ 1等所以你应该把结果保存在var中(参见http://awk.info/?tip/getline)。
你可能想要这样的东西:
getline
但如果没有,请发布一些示例输入和预期输出,以便我们为您提供帮助。