1

我在特定文件中有这样的输入

#- seeds: "12.123.233.213,123.231.3.2"
    - seeds: "12.12.21.21,43.435.54.54"

如您所见,种子包含两个连续的 IP 地址,因此我想在文件中更改该 IP 地址。第一行将不被考虑,因为它以“#”开头

所以为了做到这一点,我有这个:

val=' - seeds: "'

newSeed=${val}${ip1}','${ip2}'"'     # ---> I'm creating the new seed
str=`grep "\s- seed" $file`          # ---> finding matching character
echo $str                            # ---> it does print out the 2nd line
sed -i 's|${str}|${newSeed}|g' $file # --> now replace the matched string with new seed value

但它不会替换文件中的值。我在这里做错了什么?

4

2 回答 2

2

单引号不扩展变量名。使用双引号。

于 2012-10-26T15:12:28.650 回答
1

bash 需要双引号来扩展变量。

sed -i "s/${str}/${newSeed}/g"

于 2012-10-26T15:13:33.640 回答