1

我试图从字符串中删除“坏”字符,但我似乎无法让它正确运行。

我当前的命令:如果我试图删除 e 和 l

sed -e "s/e|l//g" ...

这完全符合预期

sed -e "s/e//g"

所以我的主要问题是如何使用正则表达式匹配和替换多个独立字符串?

4

2 回答 2

3

对于您的具体示例,如果您正在寻找字母的任何实例e或者l您想要一个字符类。说:

sed 's/[el]//g'
于 2013-09-21T05:28:59.900 回答
0

正如我在评论中提到的,你不能,match and replace multiple independent strings using regex但你可以这样做match and replace multiple independent strings,只是不使用正则表达式:

awk -v strings="foo,bar" '
BEGIN {
    split(strings,tmp,/,/) 
    for (i=1;i in tmp; i++)
        stringA[tmp[i]]
}
{
    for (string in stringA) {
        if ( start = index($0,string) ) {
             $0 = substr($0,1,start-1) "some other string" substr($0,start+length(string)+1)
        }
    }
    print
}
' file

未经测试,但上面应该用文本“其他字符串”替换字符串“foo”和/或“bar”。

于 2013-09-21T14:08:48.887 回答