sed を使用してファイル内のパスを置き換えようとしています。
sudo sed 's/a/b/g' -i /tmp/test
ただし、変数は
a = /var/lib and
b = /data/lib
スラッシュをエスケープするにはどうすればよいですか?
sed を使用してファイル内のパスを置き換えようとしています。
sudo sed 's/a/b/g' -i /tmp/test
ただし、変数は
a = /var/lib and
b = /data/lib
スラッシュをエスケープするにはどうすればよいですか?
The character just after the s
command doesn't need to be a /
. When working with paths, I use :
, as in:
sudo sed 's:a:b:g' -i /tmp/test
#
代わりに、インスタンスの使用のために sed の区切り文字を変更できます。
$ sed 's#/var/lib#data/lib#'
/var/lib
data/lib
これはうまくいくはずです
sed -i "s@$a@$b@g" /tmp/test
あなたが世話をする必要がある2つのこと:
1) sed 行で変数を使用する場合は、二重引用符を使用します
/
2) 区切り文字は " "以外でもかまいません。@, #, : ...
sed(1) では、vi(1) と同様に、'/' は通常の区切り記号です。でエスケープすることができ\
、パス名を変更するときに「つまようじ傾倒症候群」につながります。
sed -e 's/\/var\/lib/data\/lib/' ...
';' など、単語以外の別の文字を使用できます。
sed -e 's;/var/lib;data/lib; ...