Shell:删除文件中正则表达式的每秒匹配

时间:2015-04-17 15:40:47

标签: regex awk sed gawk

我说我已经提出了匹配一个数据的正则表达式;正则表达式包含2个sed组(()中包含的子表达式)。还要说这个正则表达式重复9次以匹配整行。我面临的问题是如何删除(以优雅的方式)与正则表达式的每一秒匹配。

1 个答案:

答案 0 :(得分:1)

假设您有以下字符串,并希望删除bar的出现次数:

foo bar foo bar foo bar

您可以使用以下sed命令,注意选项g,使替换尽可能多次发生:

sed -r 's/([a-z]+) ([a-z]+)/\1/g' <<< 'foo bar foo bar foo bar'

输出:foo foo foo

但是,对于字数不均匀的字符串,这不起作用。我会使用*量词使第二个捕获组可选,以使上述命令甚至可以使用这样的字符串:

sed -r 's/([a-z]+) ([a-z]+)*/\1/g' <<< 'foo bar foo bar foo bar foo'

输出:foo foo foo foo