datetime - 在 AWK 中转换日期

标签 datetime command-line awk

我有一个包含许多文本列的文件,其中包括 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/

相关文章:

javascript - jquery datetimepicker 设置为日期取决于日期

android - 如何从设备上的命令行卸载 android 应用程序

linux - 需要帮助 shell 脚本来过滤所有者机器列表

linux - 不包含字符串的处理行和匹配行下方的输出行

python - 仅过滤当月的数据集

c# - 使用 SQL 插入日期时间(同时转换为字符串)

Python--忽略天数的Timedelta表达式(将6分钟视为24小时+6分钟)

bash - 如何通过命令行检查校验和?

python - 使用命令行工具组合多个图像

regex - 如何使用 grep/sed/awk 从文本文件开头删除模式