sed-用一个命令替换两个字符中的任何一个

sed-用一个命令替换两个字符中的任何一个,sed,Sed,我想要一个sed命令来完成以下任务: $ sed s'/:/ /g' <and> sed s'/=/ /g' $sed s'/://g'sed s'/=///g' 就是我想写, sed s'/<something>/ /g' sed s'///g' 并用空格替换=和: sed s'/[:=]/ /g' 括号表示“任意一个”一个选项也是使用sed-e,如下所示。虽然在这种情况下您不需要它,但是了解它是一个很好的选择 sed -e 's/:/ /' -e 's/.

我想要一个
sed
命令来完成以下任务:

$ sed s'/:/ /g' <and> sed s'/=/ /g'
$sed s'/://g'sed s'/=///g'
就是我想写,

sed s'/<something>/ /g' 
sed s'///g'
并用空格替换
=

sed s'/[:=]/ /g'

括号表示“任意一个”

一个选项也是使用
sed-e
,如下所示。虽然在这种情况下您不需要它,但是了解它是一个很好的选择

sed -e 's/:/ /' -e 's/..../ /' file

桑杰的回答解决了这个问题。另一个仅适用于一个sed命令的选项是用分号分隔每个
s
替换

sed 's/:/ /g ; s/=/ /g' file
或者在脚本中的单独行中

sed 's/:/ /g 
     s/=/ /g' file

这些在其他情况下可能很方便。

我在任何地方都看不到等号
=
什么是
s'
为什么不
s
?好问题;如果
bash
命令的一个参数中有空格,
bash
将把它分成两个参数。我们希望将整个命令作为单个参数发送到
sed
。你同样可以把引号放在
s
之前,即
sed的//[:=]//g'
我想,虽然我还没有测试过它。另外,如果你转义一个特殊字符,一定要转义它-例如,我转义了{和},那就是[\{}]