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

时间:2014-04-07 13:36:46

标签: 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

我想将日期格式从此[日期] T [时间] Z格式更改为正常日期时间:

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

insted of

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

1 个答案:

答案 0 :(得分:4)

您需要使用反向引用:

sed 's/\([0-9]\)T\([0-9]\)/\1 \2/g' file.csv

如果您知道日期是输入中的第三个字段,您还可以使用awk

awk '{sub("T", " ", $3)}1' file.csv