题 使用一个sed命令替换两个字符


我正试图删除 = 和 ] 使用一个sed命令的字符:

# echo "A=[A]" | sed s'/[=\]]/ /g'
A=[A]

这种语法出了什么问题?

我期待sed的以下结果

# echo "A=[A]" | ....sed 
A [A

5
2018-02-21 10:07




该预期结果是否有一个空格或两个或没有?因为它目前有一个,而其他选项需要稍微不同的解决方案。 - Ladadadada
如果你想让结果用空格替换每次出现的“[”和“A”,我会用 tr。其中一个“使用错误的工具(即,过于复杂)的工作”情况。 - Belmin Fernandez


答案:


echo "A=[A]" | sed s'/[]=]/ /g'

A [A


5
2018-02-21 10:22





您可以使用'-e'标志来执行多个替换,例如:

# echo "A = [A]" | sed -e 's/=//' -e 's/]//'
A  [A

有可能在一个替代品中匹配'='和']',但即使它是,我认为它不会比使用'-e'提供更多好处。


8
2018-02-21 10:23





它可能更容易使用 TR 做这样的事情,因为它不涉及搞乱RE

echo "A=[A]<-" | tr "]=" " "
A [A <- 

5
2018-02-21 10:39