如果我有一个字符串:get schwifty
并且我想以get\|schwifty
结束,那么我要尝试的第一件事就是:
echo "get schwifty" | tr ' ' "\|"
然而这失败了,只返回管道。如果我尝试使用多个反斜杠,则会发生相反的情况,我只得到反斜杠而不是管道。
如何以get\|schwifty
结束?
答案 0 :(得分:6)
tr
只能用于将一个字符替换为另一个字符(或从输入中删除字符)。
tr ' ' "\|"
用管道替换空格,因为双引号会导致bash在调用tr
(作为tr ' ' '|'
)之前将反斜杠解释为转义字符。请注意,反斜杠也是tr
的转义字符(请参阅tr
手册页)。
您可以改为使用sed
:
echo "get schwifty" | sed -e 's/ /\\|/g'
或者,您可以使用bash pattern substitution:
s="get schwifty"
echo "${s/ /\\|}"