当前位置: 技术问答>linux和unix
怎么去掉掉数字后面多余的0?
来源: 互联网 发布时间:2016-05-02
本文导语: 文件内容如下 1|1.000|5.29000| 2|5.040|9.53030| 3|9.045500|5.23000| 希望变成 1|1|5.29| 2|5.04|9.5303| 3|9.0455|5.23| 即将多余的小数点及尾部的0去掉 有什么好办法? | 再修正一下 sed 's/(.[0-9]+[1-9]|.[1-9])0+|/1|/g...
文件内容如下
1|1.000|5.29000|
2|5.040|9.53030|
3|9.045500|5.23000|
希望变成
1|1|5.29|
2|5.04|9.5303|
3|9.0455|5.23|
即将多余的小数点及尾部的0去掉 有什么好办法?
1|1.000|5.29000|
2|5.040|9.53030|
3|9.045500|5.23000|
希望变成
1|1|5.29|
2|5.04|9.5303|
3|9.0455|5.23|
即将多余的小数点及尾部的0去掉 有什么好办法?
|
再修正一下
sed 's/(.[0-9]+[1-9]|.[1-9])0+|/1|/g;s/.0+|/|/g' dd.dat
|
这个简单啊,你把每个字段存入一个字符串然后用atoi接口转成一个浮点数,然后再直接print出来,就没有后面的0及不必要的小数点啦。
|
文件读写出来都是字符了,你那些多出来的0都是一个个的字符,你还不会去掉?
重新读写,就搞定了呗。
重新读写,就搞定了呗。
|
vim 的话,执行
:g/.*0+|/s//|/g
|
友情up
|
lz 看看是否写错,执行的结果可以去除 9.53030 后的 0
|
不知 lz 用的什么版本的 VIM
试了 VIM 7.1 和 7.2,没有问题
照理说,正则表达式不应该出问题
试了 VIM 7.1 和 7.2,没有问题
照理说,正则表达式不应该出问题
|
sed 也是一样的
自己加 -i 选项
sed 's/.*0+|/|/g' yourdata.dat
自己加 -i 选项
|
1|1.000|5.29000|
2|5.040|9.53030|
3|9.045500|5.23000|
4|3.010|3.010|
sed 's/.?0+|/|/g' dd.dat
还是换成 ? 吧,匹配 0 和 1 次 . 符号
1|1|5.29|
2|5.04|9.5303|
3|9.0455|5.23|
4|3.01|3.01|
|
sed 's/(.[0-9]+[1-9])0+|/1|/g;s/.0+|/|/g' dd.dat
这个应该匹配比较好
1|1.000|5.29000|
2|5.040|9.53030|
3|9.045500|5.23000|
4|3.010|3.010|
10|200|22200|
300|22.00|220.000|
4000|2200|22.000|
3000|22.0|222000|
==>
1|1|5.29|
2|5.04|9.5303|
3|9.0455|5.23|
4|3.01|3.01|
10|200|22200|
300|22|220|
4000|2200|22|
3000|22|222000|
|
:[range]s/pattern/string/[c,e,g,i]5.1