我正在使用一个 csv 文件,其中包含以下结构的数据:
"12345","BLAH","DEDA","0.000","1.111","2.22222","3.3333333,"15/12/2017 4:26:00 PM"
我想将 12 小时时间转换为 24 小时时间。以下显示了我最终要实现的目标:
"12345","BLAH","DEDA","0.000","1.111","2.22222","3.3333333,"15/12/2017 16:26:00"
我发现以下问题的答案似乎解决了我的问题的时间段的转换。 https://stackoverflow.com/questions/8083973/bash-and-awk-converting-a-field-from-12-hour-to-24-hour-clock-time#8084087
所以有了上述,我相信我必须做以下过程(可能有更有效的方法):
将日期和时间暂时分开到自己的记录中
"12345","BLAH","DEDA","0.000","1.111","2.22222","3.3333333,"15/12/2017","4:26:00 PM"
- 定位时间记录并将其转换为我想要的 24 小时格式
- 将日期和时间记录连接回单个记录
我正在尝试使用 awk 来实现这一点,但我被困在第一部分!awk 是适合这项工作的正确工具,还是您会推荐其他工具?
我从第 1 步开始。我什至无法成功定位日期!
awk 'BEGIN {FS=","} { gsub(/[0-9]\{2\}\/[0-9]\{2\}\/[0-9]\{4\}/, "TESTING"); print }' myfile.csv
我会
perl
在这里使用:如果下午(下午 12 点除外),则将小时部分加 12 并将上午 12 点更改为 0。
使用
awk
,不做单词边界部分(例如,可能会给出误报123:21:99 AMERICA
)并假设每行只出现一次:此解决方案将每行中所有 12 小时格式的项目转换为 24 小时格式。
输入
输出