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

Regex 如何在linux/unix文本文件中更改日期格式,regex,linux,date,unix,sed,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:3

以下是文本文件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})/\1:\2:\3/g' myfile.txt
()
正在捕获组。存储使用捕获组匹配的任何结果,并可在替换期间使用
\1
\2
等进行反向引用

([0-9]{4})-([0-9]{2})-([0-9]{2})
<--------> <--------> <-------->
1st group  2nd group  3rd group
([0-9]{4})-(0-9]{2})-(0-9]{2})
第一组第二组第三组

您应该尝试以下操作,而不是分组:

sed 's/-/:/g' myfile.txt

如果您想就地编辑文件,请使用
i
选项,例如:
sed-i的/-/:/g'myfile.txt

阅读和。@narasimharao-请确认您是否总是以这种格式获取数据。如果您在其他任何地方得到
-
怎么办?你确定它永远不会发生吗?如果你只是想用OP首先想要的
替换
-
,这是一个更好的选择。显然这就是OP所要求的,没有理由逃避
-
,只需使用
's/-/:/g'
我最喜欢您的解决方案,因为它允许我更改日期的顺序。
sed 's/-/:/g' myfile.txt