gpt4 book ai didi

regex - vim中的一个十进制数乘以一个固定的数

转载 作者:行者123 更新时间:2023-12-02 00:11:08 25 4
gpt4 key购买 nike

我有一个包含以下内容的文件:

set x 0.00456 y 0.05896.

我想将数字乘以固定数量(比如 1000)。这些数字并不总是存在于同一列中,因此任何带有 awk 的东西都不在画面中。我一直在尝试这个,但不确定我使用子匹配的方式是否正确。

%s/ \d*\.\d*/\=submatch(2)*100

最佳答案

vi

您的 submatch(2) 用法不正确。您没有任何匹配的组,因此您应该使用 submatch(0)

代码中的另一个问题是,您应该先将字符串更改为 float ,然后再进行计算:

%s/\v\d+[.]\d+/\=str2float(submatch(0))*1000/g

问答

The numbers do not always exist in the same column so anything with awk is out of the picture.

这不是真的。您可以检查每一列,如果它符合数字格式,则进行数学计算:

awk '{for(i=1;i<=NF;i++)if($i~/[0-9]+[.][0-9]+/)$i*=1000}7' file

你也可以在你的 vim 中调用 awk:

%!awk '{for(i=1;i<=NF;i++)if($i~/[0-9]+[.][0-9]+/)$i*=1000}7' 

关于regex - vim中的一个十进制数乘以一个固定的数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59045404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com