簡體   English   中英

用RegEx和awk或sed用逗號(,)替換一些點(。)

[英]Replace some dots(.) with commas(,) with RegEx and awk or 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;

我能夠識別出應該找到正確點的RegEx。

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

但是,如何用awk或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'應該可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM