在字符串中查找数字并替换它

在字符串中查找数字并替换它

我编写了 C++ 代码,现在我想使用 shell 脚本替换字符串中的数字。

需要更换的部件:

if (random<=90)

我怎样才能从 shell 脚本更改 90?

我写了这个,但是我需要一些除了sed或使用更好的正则表达式之外的有效方法才能匹配数字本身。

for i in {1..1000..100}
do
sed -i "s/(random<=.*)/(random<=$i)/g" myfile
done

答案1

如果你只是想匹配数字,你需要积极的后视和前视.sed不支持这一点,但是perl确实如此。

perl -pi -e "s/(?<=\(random<=).*(?=\))/$i/g" myfile

解释:

(?<=                         positive lookbehind
  \(random<=                 match a literal (random<=
)
.*                           match any character, multiple times
(?=                          positive lookeahead
  \)                         match a literal )
)

后视匹配和前视匹配均未使用,因此您可以用 替换$i

相关内容