2011-07-19 3 views
23

は、私が最初にユーザー入力を取得し、\ /それぞれの前には、私はこれを書い挿入したいと思いますが、それは動作しません。sedを使ってbashの変数を操作できますか?私のプログラムで

${parameter/pattern/string}からstringpatternの最初のマッチを置き換える:

website=$(sed 's|/|\\/|g' <<< $website) 

バッシュは、実際に交換nativelyのこの種をサポートしています。

echo "input a website" 
read website 

sed '/\//i\/' $website 

答えて

60

これを試してみてください。
${parameter//pattern/string}からstringpatternのすべての一致を置き換えます。

そこであなたが行うことができます:

website=${website//\//\\/} 
+0

ネイティブバージョンは長いに大きな変数の内容 'コマンドを使用して私のために動作しませんでした:' – Artistan

8
echo $website | sed 's/\//\\\//g' 

や、読みやすくするため:

echo $website | sed 's|/|\\/|g' 
+0

それは説明だけでなく、あなたが気に.Wouldうまく機能し、この 'S/\ // \\\ // G' と、この年代|/| \\/| G '?? –

+1

'searchreplacecommand |ソース|ターゲット|グローバル(すべての一致)'あなたがセパレータとして( '|')任意の文字を使用することができます。伝統的に '/'はセパレータ –

+0

に使用されますが、私は変数と変数を使用します。何も挿入しません。あなたはその理由を理解できますか?ありがとう –

関連する問題