用逗号(,)将一些点(.)替换为Regex和Awk或Sed



我想用逗号替换一些逗号,但不是全部匹配:

hostname_metric (Index: 1) to hostname;metric (avg);22.04.2015 13:40:00;3.0000;22.04.2015 02:05:00;2.0000;22.04.2015 02:00:00;650.7000;2.2594;

结果应该像这样:

hostname_metric (Index: 1) to hostname;metric (avg);22.04.2015 13:40:00;3,0000;22.04.2015 02:05:00;2,0000;22.04.2015 02:00:00;650,7000;2,2594;

我能够识别应该可以找到正确的点的正则表达式。

;[0-9]{1,}.[0-9]{4}

但是如何用尴尬或sed逗号替换它们?

预先感谢!

在您的问题中向正则添加一些捕获组,您可以使用此SED单线:

sed -r 's/(;[0-9]{1,}).([0-9]{4})/1,2/g' file

这匹配并捕获.之前和之后的零件,并在替换字符串中使用它们。

在某些版本的SED上,您可能需要使用-E而不是-r来启用扩展正则表达式。如果您的SED版本都不了解任何一个开关,则可以使用基本的正则表达式并添加一些逃生字符:

sed 's/(;[0-9]{1,}).([0-9]{4})/1,2/g' file

sed 's/(;[0-9]+).([0-9]{4})/1,2/g'应该做技巧。

相关内容

  • 没有找到相关文章