我要转换以下文本文件:

4100,123.45-,6789.66-
4152,1234.11,6789.11

(还有更多的记录)

4100,-123.45,-6789.66
4152,1234.11,6789.11

请注意,输入文件的数字末尾有减号,我想使用linux命令更正它。
请帮忙…

最佳答案

使用sed!

sed 's/\([0-9.]*\)-/-\1/g' file

要就地执行,请使用-i选项:
sed -i 's/\([0-9.]*\)-/-\1/g' file

它使用正则表达式。对于这种情况:
s/x/y/g--用x替换任何y的出现
[0-9.]*--匹配任意数量的数字或点
\(\)--匹配组并绑定到替换表达式中的\1\2
---匹配减号
因此,这个表达式匹配任意数量的数字或点,分组到\1,以减号结尾,并将减号放在该组之前。

关于linux - 字符串中的原位移位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29120156/

10-10 17:40