2016-05-29 3 views
1

get schwiftyを、私はget\|schwiftyで終わるしたい、私がしようと試みる最初の事は次のとおりです。Bashではどのようにバックスラッシュとそれに続くパイプを印刷/使用しますか?私は、文字列がある場合

echo "get schwifty" | tr ' ' "\|" 

これはしかし失敗し、パイプのみを返します。複数のバックスラッシュを使用しようとすると、逆のことが起こります。パイプだけでなく、バ​​ックスラッシュを取得します。

どうすればget\|schwiftyになりますか?

+2

:また

echo "get schwifty" | sed -e 's/ /\\|/g' 

を、あなたはbashのpattern substitutionを使用することができます。 –

+0

ご意見はありますか? – driedupsharpie

+0

なぜあなたは強い引用符を試していませんか? 'echo"はschwiftyを取得する| tr '' '\ |' ' – SaintHax

答えて

6

trは、ある文字を別の文字に置き換える(または入力から文字を削除する)ためにのみ使用できます。

tr ' ' "\|"は、二重引用符により、バックスラッシュをエスケープ文字として解釈してからtrtr ' ' '|')を呼び出すため、スペースをパイプに置き換えます。バックスラッシュもtrのエスケープ文字であることに注意してください(trのマニュアルページを参照)。あなたが代わりにsedを使用することができます

:tr` `以外のものを使用し

s="get schwifty" 
echo "${s/ /\\|}" 
+0

これは動作せず、パイプのみを提供しています – driedupsharpie

+0

@driedupsharpieどちらのオプションも私にとっては役に立ちます(http://www.tutorialspoint.com/execute_bash_online.php?PID=0Bw_CjBb95KQMWnJKYXJFTmtiTlEを参照)。 –

+0

@driedupsharpie、Philの提案も私のために働く - まるで私が期待するように。 –

関連する問題