2012-08-09 55 views
7
的TextWrangler

我在使用的TextWrangler到grep發現這種類型的字符串替換:查找/使用grep和

4,600.00 

我的正則表達式的命令如下:

\d.\d{3}.\d{2} 

這似乎找到字符串正確。我想用4600.00替換字符串4,600.00,因爲我希望將這些數據保存在.csv文件中。我如何從每個我找到的號碼中刪除逗號?

+0

我猜你的行不僅包含這個數字,而且還包含「foo,bar,blah,4,600,000.00,some,more」等字樣,但如果該行爲「foo,bar,blah,999,600,000.00 ...」,該怎麼辦你說999和600000.00是兩列?你的輸入文件中是否有其他規則? – Kent 2012-08-09 10:18:52

+0

數字保持在100,000以下,所以我只需要找到',000.00'。我不清楚替換代碼是什麼;我試過'\ d \ d {3}。\ d {2} '。 – djq 2012-08-09 10:36:50

回答

12

搜索:(\d{1,3}),(\d{1,3})\.(\d{1,2})

替換:\1\2.\3

作品中的TextWrangler。

1

AWK oneliner:

awk --re-interval '{x=gensub(/([0-9]{1,3}),([0-9]{3}\.[0-9]{2})/,"\\1\\2","g");print x}' file 

測試:使用sed

kent$ awk --version|head -1 
GNU Awk 3.1.6 

kent$ echo "foo,bar,blah,46,000.00,some,more"|awk --re-interval '{x=gensub(/([0-9]{1,3}),([0-9]{3}\.[0-9]{2})/,"\\1\\2","g");print x}' 
foo,bar,blah,46000.00,some,more 
+0

這裏真正的問題是TextWrangler,而不是命令行 – 2017-07-07 16:28:58

0

方式一:

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

您可以添加-i標誌直接將更改寫入文件。