私はXとすべてのスペース、コマンド作品、コマンドビーイング交換するsedを使用します。ただしsedを使ってスペースを(スペース)に置き換える方法は?
sed 's/ /X/g' filelist.tmp
を、私は\スペースとスペースのすべての出現を置き換えるために同じことをしようとすると、コードビーイング:
sed 's/ /\ /g' filelist.tmp
これは機能しません。私は間違って何をしていますか?私はシェルスクリプトの初心者です。
私はXとすべてのスペース、コマンド作品、コマンドビーイング交換するsedを使用します。ただしsedを使ってスペースを(スペース)に置き換える方法は?
sed 's/ /X/g' filelist.tmp
を、私は\スペースとスペースのすべての出現を置き換えるために同じことをしようとすると、コードビーイング:
sed 's/ /\ /g' filelist.tmp
これは機能しません。私は間違って何をしていますか?私はシェルスクリプトの初心者です。
あなたは\
リテラルにする必要があり、別の\
すなわちを追加します。
sed 's/ /\\ /g'
スペースの前に一つだけ\
で、\
は以下のスペースをエスケープされます。スペースはエスケープする必要のある置換えの特殊文字ではないため、そのまま使用されます。
例:
% sed 's/ /\\ /g' <<<'foo bar spam'
foo\ \ bar\ \ spam
あなたは-r引数を使用する必要がありますし、あなたはまた、 "\" をエスケープするためには間違いがあり
sed -r "s/\s/\\\s/g" filelist.tmp
に構文を修正する必要があります。
試してみてください。変更は発生しませんでした。私のコードは 'sed 's// \\/g" filelist.tmp'でした。それは動作しませんでした! –
@SomenathSinhaいいえ、私が使ったのと同じように一重引用符を使用してください。さもなければ、あなたはシェルエスケープするでしょう。 Do: 'sed 's// \\/g'' – heemayl
それはうまくいった!なぜ二重引用符で動作していないのですか? –