在Bash中你如何打印/使用反斜杠后跟管道?

时间:2016-05-29 00:29:53

标签: bash tr

如果我有一个字符串:get schwifty并且我想以get\|schwifty结束,那么我要尝试的第一件事就是:

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

然而这失败了,只返回管道。如果我尝试使用多个反斜杠,则会发生相反的情况,我只得到反斜杠而不是管道。

如何以get\|schwifty结束?

1 个答案:

答案 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/ /\\|}"