我有一个名为model_c2.cpp的cpp代码文件。 代码中的一行是:
double n=0.0;
我想使用bash和sed将其从1.0循环到50.0。 我尝试了以下循环,但它无法正常工作。我做错了什么?
#!/bin/bash
for i in $(seq 1 50);
do
sed -i -e 's/n=*/n=$i.0/g' $model_c2.cpp
done
答案 0 :(得分:4)
您还需要正则表达式.*
,而不是全局*
sed -i -e "s/n=.*/n=$i.0;/g" $model_c2.cpp
答案 1 :(得分:0)
是否要运行或编译程序,并依次为每个值分配n
?您是否希望以唯一名称保存文件?
您的脚本只会“保留”此时替换的最后一个值,因此除非您使用不同的名称保存它,否则您似乎不希望它在循环中。
另外,为什么你有$model
而不仅仅是模特?该变量是否在别处定义......?
如果您尝试使用不同的名称保存50个不同的cpp文件,请将$i
放在目标文件名中:
for i in $(seq 1 50);
do
sed -e "s/double n=.*/double n=$i.0;/" model_c2.cpp > model_$i_c2.cpp
done
这将生成50个名为model_1_c2.cpp
... model_50_c2.cpp
我认为搜索每个n=
有点危险,因为它会用任何其他以n
结尾的变量替换任何一行。我已经添加double
作为对此的一点保证......