如何使用sed和正则表达式替换(特殊)字符和数字的arbritary组合

时间:2016-05-19 10:17:29

标签: regex linux replace sed

我有一个csv文件,其中包含几乎完整的填充列,如下所示:

"bla","","blabla","bla::bla::blabla",19.05.16 12:00:03,123456789,"bla::38594f-47849-h945f",""

现在我想用一个点替换两个数字之间的逗号:

"bla","","blabla","bla::bla::blabla",19.05.16 12:00:03.123456789,"bla::38594f-47849-h945f",""

我尝试了很多,但没有任何帮助。 : - (

sed s/[0-9],[0-9]/./g data.csv

有效,但会删除逗号前后的两个数字。所以我尝试了像

这样的东西
sed s/\(\.[0-9]\),\([0-9]\.\)/\1.\2/g data.csv

但是没有改变。

1 个答案:

答案 0 :(得分:1)

尝试s/\([0-9]\),\([0-9]\)/\1.\2/g

$ echo '"bla","","blabla","bla::bla::blabla",19.05.16 12:00:03,123456789,"bla::38594f-47849-h945f",""' | sed 's/\([0-9]\),\([0-9]\)/\1.\2/g'
"bla","","blabla","bla::bla::blabla",19.05.16 12:00:03.123456789,"bla::38594f-47849-h945f",""

Regex Demo Here

你真的不需要捕获组中的额外点\.