【发布时间】:2011-08-02 18:21:10
【问题描述】:
我有一个文件,它有几行如下
ABCD|100.19000|90.100|1000.000010|SOMETHING
BCD|10.100|90.1|100.019900|SOMETHING
现在,在对此应用sed 之后,我希望输出如下(用于进一步处理)
ABCD|100.19|90.1|1000.00001|SOMETHING
BCD|10.1|90.1|100.0199|SOMETHING
即我希望从结果中删除所有尾随零(| 之前的零)。
我尝试了以下:(regtest是包含原始数据的文件如上图)
cat regtest | sed 's/|\([0-9]*\)\.\([0-9]*\)0*|/|\1\.\2|/g'
没有工作,因为我认为它很贪婪。
cat regtest | sed 's/|\([0-9]*\)\.\([0-9]*\)0|/|\1\.\2|/g'
会工作。但是,我将不得不在同一个文件上重复应用这个sed 命令来一个接一个地删除零。没有意义。
我该怎么办?谢谢!
【问题讨论】:
-
当小数点后面只有零时,所需的输出是什么?没有小数点,只有小数点,还是小数点后跟一个零?
-
这种情况不需要处理,因为我已经单独处理了......
标签: regex sed non-greedy