我知道这是一个漫长的过程,但是我有一个巨大的文本文件,我需要在与某些条件匹配的其他数字上添加一个给定的数字。
例如。
identifying text 1.1200
identifying text 1.1400
我想将其(通过添加1.15)转换为
identifying text 2.2700
identifying text 2.2900
通常,我会使用Python进行此操作,但是它在Windows计算机上无法安装太多东西。我虽然有Vim :)
最佳答案
这是霍布斯解决方案的简化和修正:
:%s/identifying text \zs\d\+\(.\d\+\)\=/\=(1.15+str2float(submatch(0)))/
多亏了
\zs
,无需重新调用前导文本。感谢str2float()
对整数进行一次加法(换句话说,1.15 + 2.87将得到预期的结果4.02,而不是3.102)。当然,此解决方案需要Vim的最新版本(7.3?)