我知道这是一个漫长的过程,但是我有一个巨大的文本文件,我需要在与某些条件匹配的其他数字上添加一个给定的数字。

例如。

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?)

09-25 15:51