使用tr命令替换一个字符为多个字符

23
  `echo "a~b" | tr '~' "=="`

这会输出a=b。但我想要a==b。如何使用tr做到这一点?

3个回答

27
< p >tr只能翻译/删除字符。

尝试类似这样的东西:

 echo "a~b" | sed 's/~/==/g'

在这种情况下,echo "ab" | sed 's//&=/g'无法正常工作。我该如何处理&字符? - thetux4
2
echo "ab" | sed 's//&=/g' - 转义它 - Prince John Wesley

14

你不能使用 tr

相反,可以使用bash字符串操作 ${string/substring/replacement}。例如:

str="a~b"
echo ${str/"~"/"=="}

或者使用sed

echo "a~b" | sed 's/~/==/'

tr 命令可以将所有出现的字符替换。如果要在 bash 的子字符串替换中实现这种行为,请使用两个斜杠:str="a~b~c"; echo ${str//"~"/==} - user695022

3
你不能这样做;tr只能映射单个字符。请使用sed。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接