2016-11-30 153 views
1

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

的样本数据是

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'} 

感谢

回答

-1

解决得到尽可能这一点,

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

甚至还没有接近一个合理的解决方案,因为它是越野车,即使你固定它到你提供工作效率极低输入数据。另外谷歌UUOC。如果你用'awk'来标记你的问题而不是(或者除了)''gawk'',很多人都会看到它,你会在几分钟内得到正确的解决方案。下次... –

+1

感谢您的有益反馈 – bibble235

0

太糟糕了,你没”包括任何值在您的样品输入端,实际上是否由此计算的影响,但无论如何,这里是你如何做到这一点:

$ 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 
相关问题