正则表达式使用|与sed

时间:2013-09-21 05:18:27

标签: regex sed

我正在尝试从字符串中删除“坏”字符,但我似乎无法让它正常行事。

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

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

这完全符合预期

sed -e "s/e//g"

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

2 个答案:

答案 0 :(得分:3)

对于您的具体示例,如果您要查找字母el的任何实例,则需要字符类。说:

sed 's/[el]//g'

答案 1 :(得分: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”替换为文本“some other string”。