2017-01-15 21 views
3

私はXとすべてのスペース、コマンド作品、コマンドビーイング交換するsedを使用します。ただしsedを使ってスペースを(スペース)に置き換える方法は?

sed 's/ /X/g' filelist.tmp 

を、私は\スペースとスペースのすべての出現を置き換えるために同じことをしようとすると、コードビーイング:

sed 's/ /\ /g' filelist.tmp 

これは機能しません。私は間違って何をしていますか?私はシェルスクリプトの初心者です。

答えて

7

あなたは\リテラルにする必要があり、別の\すなわちを追加します。

sed 's/ /\\ /g' 

スペースの前に一つだけ\で、\は以下のスペースをエスケープされます。スペースはエスケープする必要のある置換えの特殊文字ではないため、そのまま使用されます。

例:

% sed 's/ /\\ /g' <<<'foo bar spam' 
foo\ \ bar\ \ spam 
+0

試してみてください。変更は発生しませんでした。私のコードは 'sed 's// \\/g" filelist.tmp'でした。それは動作しませんでした! –

+1

@SomenathSinhaいいえ、私が使ったのと同じように一重引用符を使用してください。さもなければ、あなたはシェルエスケープするでしょう。 Do: 'sed 's// \\/g'' – heemayl

+0

それはうまくいった!なぜ二重引用符で動作していないのですか? –

-1

あなたは-r引数を使用する必要がありますし、あなたはまた、 "\" をエスケープするためには間違いがあり

sed -r "s/\s/\\\s/g" filelist.tmp 

に構文を修正する必要があります。

関連する問題