我想不出一个好的 sed、正则表达式或 windows cmd,或两者兼而有之,将 csv 文件中的行重新格式化为可用的日期时间实现很糟糕:
鉴于:
Name,Equip1_SA-TEMP -- ASample,7/8/13 0:00,55.10
Name,Equip1_SA-TEMP -- ASample,7/8/13 0:10,55.50
我需要“找到”日期时间部分,例如 (7/8/13 0:00) 并重新格式化为类似 SQL 的 DATETIME:
Name,Equip1_SA-TEMP -- ASample,2013-07-08 00:00:00,55.10
Name,Equip1_SA-TEMP -- ASample,2013-07-08 00:10:00,55.50
如您所见,这可能需要在月、日和小时前添加“0”,然后在秒前添加 :00。
获取日期时间区域类似于:
sed -E 's#^([^/]+)/([^/]+)/([0-9]+)
,但我无法首先“找到它”......需要先找到第二个','?
每行总是有 4 个字段:
Name,SomeEquipmentId,DateTime,Value.
是否有 sed + windows cmds 的良好组合来获得这个?还是我最好编写更高级别的代码来完成这一切?
使用 awk 更新:我尝试了一些命令,例如: awk -F 、 "{split($3,a,[:blank:]); vdate=a[1]; tdate=a[2]; print vdate}" 文件.csv
但它在 [ char 上给出了语法错误。逃避它是行不通的。我试过\""%%3s,但仍然返回整个字符串(例如7/18/13 00:10)。是否有更好的 awk 字符串命令可以使用,而不是尝试将它们分解成数组?