我想用逗号替换一些逗号,但不是全部匹配:
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'
应该做技巧。