这有什么错在GNU我先行的正则表达式使用sed?(What's wrong with my

2019-06-17 22:36发布

这是我在做什么(简化的示例):

gsed -i -E 's/^(?!foo)(.*)$/bar\1/' file.txt

我试图把bar中凡不与启动线前foo 。 这是错误:

gsed: -e expression #1, char 22: Invalid preceding regular expression

怎么了?

Answer 1:

据我所知, sed还没有既不前瞻也不向后看。 切换到更强大的语言有类似的语法,如perl



Answer 2:

sed -i '/^foo/! s/^/bar/' file.txt
  • -i改变的地方文件
  • /^foo/! 仅执行上线的下一个动作不!foo开头^foo
  • s/^/bar/改变行的开始吧


Answer 3:

您使用的不被GNU sed的支持Perl兼容的正则表达式(PCRE)语法。 你应该根据SED重写正则表达式的正则表达式或用perl代替。



文章来源: What's wrong with my lookahead regex in GNU sed?