シェルは変数を展開します。あなたは文字列の単一引用符を使用するときに、その内容は、文字通り扱われますsed
今リテラルのすべての出現置き換えるしようとする$var1
ことによってをZZ
。
二重引用符を使用する
二重引用符を使用して、空白を保持しながらシェルで変数を展開します。
sed -i "s/$var1/ZZ/g" "$file"
置換文字列に引用文字が必要な場合は、シェルによって解釈されるバックスラッシュをその前に置く必要があります。次の例では、文字列quote me
は"quote me"
(文字&
はによって解釈されますsed
)に置き換えられます:
sed -i "s/quote me/\"&\"/" "$file"
単一引用符を使用する
シェルのメタ文字がたくさんある場合は、パターンに一重引用符を使用し、変数に二重引用符を使用することを検討してください。
sed -i 's,'"$pattern"',Say hurrah to &: \0/,' "$file"
私はどのように使用するかに注目してくださいs,pattern,replacement,
代わりにs/pattern/replacement/
、私はとの干渉を避けるためにそれをやった/
中を\0/
。
例
次に、シェルsed
は次の引数を使用して上記のコマンドを実行します(pattern=bert
およびを想定file=text.txt
)。
-i
s,bert,Say hurrah to &: \0/,
text.txt
をfile.txt
含むbert
場合、出力は次のようになります。
Say hurrah to bert: \0/