对于排序awk,从12小时转换为24小时

时间:2016-11-30 07:02:12

标签: linux awk command-line-interface gawk

在Linux上使用gawk或类似的命令行,我想将12小时时钟日期/时间转换为24小时时间以进行排序。

示例数据

11/29/2016,9:42:21 AM
11/29/2016,12:42:26 PM
11/29/2016,12:42:27 PM
11/29/2016,12:42:50 PM

我使用事件日志

得到了这个
cat  event_log.csv  |gawk -F \,  {'print $2'}

由于

2 个答案:

答案 0 :(得分:1)

太糟糕了,您没有在示例输入中包含任何实际受此计算影响的值,但无论如何,这是您的工作方式:

$ awk -F'[ ,:]' '$5=="PM" && $2<12{$2+=12} {printf "%s,%02d:%s:%s\n", $1, $2, $3, $4}' file
11/29/2016,09:42:21
11/29/2016,12:42:26
11/29/2016,12:42:27
11/29/2016,12:42:50

答案 1 :(得分:-1)

解决了它

cat x.log | gawk '{cmd="date -d "$1 $2" +%H:%M:%S"; cmd | getline val; close(cmd); printf("%s\n",val) ; }'