Sed 删除多个字符

Sed 删除多个字符,sed,Sed,我想替换多个字符 echo "R \e&p[%20])l(a/ce" | sed 's|%20|-|g;s|\[||g;s|]||g;s| ||g;s|#||g;s|/||g;s|)||g;s|(||g;s|&||g;s|\\||g' Rep-lace 有没有其他方法可以做到这一点 用-替换%20,其余的不替换 echo "R \e&p[%20])l(a/ce" | sed 's/%20/-/g; s/[][ #/()&\\]//g' 因为字符集更容易以这种

我想替换多个字符

echo "R \e&p[%20])l(a/ce" | sed 's|%20|-|g;s|\[||g;s|]||g;s| ||g;s|#||g;s|/||g;s|)||g;s|(||g;s|&||g;s|\\||g'

Rep-lace
有没有其他方法可以做到这一点

用-替换%20,其余的不替换

echo "R \e&p[%20])l(a/ce" | sed 's/%20/-/g; s/[][ #/()&\\]//g'
因为字符集更容易以这种方式扩展。需要知道的是,
]
必须是要识别为集合一部分的集合中的第一个字符,而不是结束括号

根据您想要执行的具体操作,可能需要考虑反转字符集,并替换除指定数量的字符以外的所有字符。例如:

echo "R \e&p[%20])l(a/ce" | sed 's/%20/-/g; s/[^-[:alnum:]]//g'
这将用
-
替换
%20
,然后删除除
-
和字母数字字符以外的所有字符。

echo "R \e&p[%20])l(a/ce" | sed 's/%20/-/g; s/[][ #/()&\\]//g'
因为字符集更容易以这种方式扩展。需要知道的是,
]
必须是要识别为集合一部分的集合中的第一个字符,而不是结束括号

根据您想要做什么,可能需要考虑反转字符集,替换除指定字符数以外的所有内容。例如:

echo "R \e&p[%20])l(a/ce" | sed 's/%20/-/g; s/[^-[:alnum:]]//g'

这将用
-
替换
%20
,然后删除除
-
和字母数字字符以外的所有字符。

Bash
中,您可以在参数扩展+
sed
中使用:

bash$ STR="R \e&p[%20])l(a/ce"
bash$ echo "${STR/"%20"/-}" | sed -r 's/[^a-z-]//gi'
Rep-lace

Bash
中,可以在参数扩展+
sed
中使用:

bash$ STR="R \e&p[%20])l(a/ce"
bash$ echo "${STR/"%20"/-}" | sed -r 's/[^a-z-]//gi'
Rep-lace

感谢您提供有关删除所有字母数字字符的信息。感谢您提供有关删除所有字母数字字符的信息。