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