有谁知道如何与 sed 匹配每个 'foo' 实例,当它在以下字符串中跟随 'bar' 时除外?
'foo boo foo foo bar foo foo foo'
期望的结果(匹配的实例以粗体显示)
'匹配 嘘声 匹配 foo bar匹配 匹配 匹配'
经过大量测试,我发现:
sed -e "s/foo\( *\)bar/FOO\1BAR/g" -e "s/foo/MaTcHeD/g" -e "s/FOO\( *\)BAR/foo\1bar/g"
它包括首先匹配“foo bar”实例并将它们替换为一些临时字符串(此处为“FOO BAR”),然后在将“foo bar”实例“返回”到其原始版本之前匹配其余的“foo”实例。 ..(我希望我很清楚......)
但无论如何,这根本不干净。我会很惊讶没有更直接的方法可以做到这一点,即使到目前为止我还没有找到它。
任何提示将不胜感激。:-)
非常感谢你,