无法使用 sed 替换文件中的特定行

无法使用 sed 替换文件中的特定行

我的文件夹中有大约 100 个脚本,所有这些脚本都有我的变量 config_list 的特定值。我想编辑它的第 14 行

for i in 10-35-5 8-35-7

for i in $config_list

其中,config_list 是一个字符串,其格式为此类数字三元组的列表,即echo $config_list给出如下输出:

18-32-28 20-32-26 25-32-21 27-32-19  
16-32-27 18-30-27 25-32-18 28-30-17  
16-30-27 16-32-25 18-32-23 18-34-21 19-31-23 20-30-23 25-32-16  

等等,具体取决于当前文件夹。

因此,如果config_list0-20-0 3-15-2 5-10-5 6-8-6 7-6-7针对特定文件夹,则脚本的第 14 行应该是(预期输出):
for i in 0-20-0 3-15-2 5-10-5 6-8-6 7-6-7

每个列表对于每个文件夹都是唯一的,并且可能有 1 到 8 个这样的三元组。所以基本上,我试图使用另一个脚本更改位于相应不同文件夹中的每个单独脚本文件的 for 循环的参数。

我尝试使用

sed -i "14s/.*/for i in $config_list/" $dest/script.sh
其中,dest 是目标文件夹前缀并且已正确定义。

当我在整个文件夹集上运行脚本时,有时会收到以下错误:
sed: -e expression #1, char 22: unterminated `s' command
有时甚至没有收到任何错误,但目标文件没有更改。

我使用了完全相同的语法来更改同一脚本中同一文件中的另一行,并且在所有情况下都可以完美运行,但事实并非如此。

我曾经sed -i "2s/.*/#PBS -N li-cap-$num/" $dest/script.sh将第二行从 更改
#PBS -N li-cap-50

#PBS -N li-cap-$num

知道出了什么问题吗?

编辑1:我尝试过:
sed -i "/for/c\for i in $config_list" $dest/script.sh

我收到以下错误:
sed: -e expression #1, char 28: unknown command:-'`

编辑2:这是$config_list的定义:
config_list=$(ls -l | grep '^d' | awk '{print $9}')

相关内容