1

我有一个包含多个数字的 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. for 3.00 的东西。我不想解析任何东西,只是删除零。不知何故,当我尝试时它什么也没做:

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

不得不提一下,我不擅长正则表达式,而且我在托管服务器上,所以无法安装任何库或程序,所以只允许使用 shell。

谢谢。

4

1 回答 1

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>
于 2012-04-10T18:02:42.077 回答