1

特定のファイルにこのような入力があります

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

ご覧のとおり、シードには 2 つの連続した IP アドレスが含まれているため、ファイル内のその IP アドレスを変更したいと考えています。1 行目は「#」で始まるため考慮されません

これを行うために、私はこれを持っています:

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 に答える