我有一个包含许多文本列的文件,其中包括 Fri Jan 02 18:23
的时间戳,我需要将该日期转换为 MM/DD/YYYY HH :MM
格式。
我一直在尝试使用标准的“date”工具和 awk getline 来进行转换,但我不太清楚如何以它期望的格式将字段传递到“date”命令中(引用为"或 's,) 因为 getline 也需要用引号括起来的命令字符串。
类似“date -d '$1 $2 $3 $4' +'%D %H:%M'” |获取行变量
现在我想了一下,我想我真正要问的是如何将 awk 变量嵌入到字符串中。
最佳答案
如果您使用 gawk,则不需要外部日期
,它可以是 expensive重复调用:
awk '
BEGIN{
m=split("Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec",d,"|")
for(o=1;o<=m;o++){
months[d[o]]=sprintf("%02d",o)
}
format = "%m/%d/%Y %H:%M"
}
{
split($4,time,":")
date = (strftime("%Y") " " months[$2] " " $3 " " time[1] " " time[2] " 0")
print strftime(format, mktime(date))
}'
感谢 ghostdog74 提供 this answer 的月份数组.
关于datetime - 在 AWK 中转换日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2121896/