如何删除右边的零

时间:2012-04-10 17:54:00

标签: xml regex unix

我有一个有几个数字的xml,如下所示:

<xml>
<case1>
    <amount>3.140000</amount>
    <amount2>3.0000</amount2>
    <detail>
        <name>something</name>
        <earning>3.1000</earning>
    </detail>
</case1>
<case2>
    <amount>3.10000</amount>
</case2>

xml在一行中,我正在使用这样的正则表达式进行测试:

echo "433.000" | sed -e 's/\([0-9]*\.\)\([1-9]*\)\(0*\)/\1\2/g'

但它给了我3.00的东西。我不是要解析任何东西,只需删除零。不知何故,当我尝试使用它时,它什么都不做:

sed -e 's/\([0-9]*\.\)\([1-9]*\)\(0*\)/\1\2/g' xmlFile.xml

我必须提到我对正则表达式并不好,而且我在托管服务器上,因此我无法安装任何库或程序,因此只允许使用shell。 / p>

感谢。

2 个答案:

答案 0 :(得分:0)

以下内容应该有效:

sed -e 's/\(\.[1-9][1-9]*\)0*/\1/g' -e 's/\.00*//' xmlFile.xml

这将产生以下结果:

<xml>
<case1>
    <amount>3.14</amount>
    <amount2>3</amount2>
    <detail>
        <name>something</name>
        <earning>3.1</earning>
    </detail>
</case1>
<case2>
    <amount>3.1</amount>
</case2>

答案 1 :(得分:0)

你可以这样做:

sed '{
s/\.00*</</g
s/00*</</g
}' xmlFile.xml