【问题标题】:Change the date format from text to number using single awk command使用单个 awk 命令将日期格式从文本更改为数字
【发布时间】:2020-04-18 01:10:20
【问题描述】:

我有非常大的日志文件,我需要每小时处理并保存为 csv 格式。

格式如下(这行也是在使用 sed 删除许多字符后)

Apr-05 11:10:12 xxxx xxx xxxx xxxx xxxx

我需要把它另存为

04-05 11:10:12,xxxx,xxx,xxxx,xxxx,xxxx

我尝试使用 $1 设置变量并尝试使用 GNU 日期对其进行转换但不起作用

awk -v fixdate="($1 +%m-)" '{print fixdate"-"$2" "$3 "," $x "," $y "," $z}'

我更喜欢单行方法来做到这一点。

如何将 $1 (Apr-05) 部分分配给 awk 变量并在打印前使用 GNU 日期对其进行处理。

【问题讨论】:

标签: logging awk sed


【解决方案1】:

根据这些xs 中的任何一个是否可以是-,这可能就是您所需要的:

$ awk -F'-' '{
    gsub(/ /,",",$2); sub(/,/," ",$2);
    printf "%02d-%s\n", (index("JanFebMarAprMayJunJulAugSepOctNovDec",$1)+2)/3, $2
}' file
04-05 11:10:12,xxxx,xxx,xxxx,xxxx,xxxx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    • 2015-05-26
    • 2010-09-21
    • 1970-01-01
    相关资源
    最近更新 更多