我编写了 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
。