这是我在做什么(简化的示例):
gsed -i -E 's/^(?!foo)(.*)$/bar\1/' file.txt
我试图把bar
中凡不与启动线前foo
。 这是错误:
gsed: -e expression #1, char 22: Invalid preceding regular expression
怎么了?
这是我在做什么(简化的示例):
gsed -i -E 's/^(?!foo)(.*)$/bar\1/' file.txt
我试图把bar
中凡不与启动线前foo
。 这是错误:
gsed: -e expression #1, char 22: Invalid preceding regular expression
怎么了?
据我所知, sed
还没有既不前瞻也不向后看。 切换到更强大的语言有类似的语法,如perl
。
sed -i '/^foo/! s/^/bar/' file.txt
-i
改变的地方文件 /^foo/!
仅执行上线的下一个动作不!
以foo开头^foo
s/^/bar/
改变行的开始吧 您使用的不被GNU sed的支持Perl兼容的正则表达式(PCRE)语法。 你应该根据SED重写正则表达式的正则表达式或用perl代替。