我要转换以下文本文件:
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/