如何在文本文件linux / unix中更改日期格式

时间:2016-05-30 10:12:07

标签: regex linux date unix sed

以下是文本文件myfile.txt

7022122465,0,0,day,2015-09-29 10:48:33
7022597642,0,0,day,2015-09-29 10:48:33
7022848906,0,0,day,2015-09-29 10:48:33
7022191546,0,0,day,2015-09-29 10:48:33
7022180761,0,0,day,2015-09-29 10:48:33
7022125589,0,0,day,2015-09-29 10:48:33
7022224472,0,0,day,2015-09-29 10:48:33

我想将2015-09-29的最后一栏日期格式更改为2015:09:29,请使用正则表达式帮助我。

我试过这样但是替换正则表达式(我是初学者到linux)

sed -r  's/([0-9]{4}-[0-9]{2}-[0-9]{2})/([0-9]{2}:[0-9]{2}:[0-9]{2})/g' myfile.txt

2 个答案:

答案 0 :(得分:3)

您可以使用此

sed -r 's/([0-9]{4})-([0-9]{2})-([0-9]{2})/\1:\2:\3/g' myfile.txt

()正在捕捉群组。存储使用捕获组匹配的结果是什么,并且可以在替换期间使用\1\2等进行反向引用。

([0-9]{4})-([0-9]{2})-([0-9]{2})
<--------> <--------> <-------->
1st group  2nd group  3rd group

答案 1 :(得分:3)

您应该尝试:

,而不是分组
sed 's/-/:/g' myfile.txt

如果您要使用i选项编辑文件,请执行以下操作:sed -i 's/-/:/g' myfile.txt