我有一个名为 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
你也需要正则表达式,.*
而不是 glob*
sed -i -e "s/n=.*/n=$i.0;/g" $model_c2.cpp
您想运行或编译程序并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
我认为搜索 everyn=
有点危险,因为它会用任何其他以n
. 我已经添加了double
背面作为对此的保证......