bash dateformat[date]T[time]Z到正常日期时间

bash dateformat[date]T[time]Z到正常日期时间,bash,datetime,sed,Bash,Datetime,Sed,我在这个数据表中有一个非常难看的日期格式: adress1@gmail.com othermail@pri.com 2014-03-31T13:24:04Z 555555 adress2@gmail.com othermail2@pri.com 2014-03-31T13:36:19Z 555555 我想将dateformat从[date]T[time]Z格式更改为正常的datetime格式,具体如下: cat file.csv |sed 's/[0-9]T[0-9]/[0-9] [0-9]/

我在这个数据表中有一个非常难看的日期格式:

adress1@gmail.com othermail@pri.com 2014-03-31T13:24:04Z 555555
adress2@gmail.com othermail2@pri.com 2014-03-31T13:36:19Z 555555
我想将dateformat从[date]T[time]Z格式更改为正常的datetime格式,具体如下:

cat file.csv |sed 's/[0-9]T[0-9]/[0-9] [0-9]/g'
但它会回馈我们

adress1@gmail.com othermail@pri.com 2014-03-3[0-9] [0-9]3:24:04Z 555555
adress2@gmail.com othermail2@pri.com 2014-03-3[0-9] [0-9]3:36:19Z 555555
代替

2014-03-31 13:24:04Z
你知道吗?
非常感谢

您需要使用反向引用:

sed 's/\([0-9]\)T\([0-9]\)/\1 \2/g' file.csv
如果您知道日期是输入中的第三个字段,也可以使用awk:


您需要使用反向引用:

sed 's/\([0-9]\)T\([0-9]\)/\1 \2/g' file.csv
如果您知道日期是输入中的第三个字段,也可以使用awk:


在处理日期时,使用date命令总是很有趣的。当您处理日期时,使用date命令总是很有趣的。这会让事情变得更简单。@TomiMester:别忘了接受答案,单击旁边的大复选标记。@TomiMester:别忘了接受答案,单击旁边的大复选标记。