-1

sed を使用してファイル内のパスを置き換えようとしています。

sudo sed 's/a/b/g' -i /tmp/test

ただし、変数は

a = /var/lib and 
b = /data/lib

スラッシュをエスケープするにはどうすればよいですか?

4

4 に答える 4

4

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
于 2013-02-04T13:27:05.590 に答える
1

#代わりに、インスタンスの使用のために sed の区切り文字を変更できます。

$ sed 's#/var/lib#data/lib#'
/var/lib   
data/lib
于 2013-02-04T13:27:41.543 に答える
1

これはうまくいくはずです

sed  -i "s@$a@$b@g" /tmp/test

あなたが世話をする必要がある2つのこと:

1) sed 行で変数を使用する場合は、二重引用符を使用します

/2) 区切り文字は " "以外でもかまいません。@, #, : ...

于 2013-02-04T13:28:52.717 に答える
0

sed(1) では、vi(1) と同様に、'/' は通常の区切り記号です。でエスケープすることができ\、パス名を変更するときに「つまようじ傾倒症候群」につながります。

sed -e 's/\/var\/lib/data\/lib/' ...

';' など、単語以外の別の文字を使用できます。

sed -e 's;/var/lib;data/lib; ...

于 2013-02-04T13:30:58.483 に答える