这就是我正在做的(简化示例):
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 -i '/^foo/! s/^/bar/' file.txt
-i就地更改文件/^foo/!!仅对不以foo开头的行执行下一个操作 ^foos/^/bar/将行的开头更改为 bar
据我所知sed,既不是向前看也不是向后看。切换到具有相似语法的更强大的语言,例如perl.
您使用 GNU sed 不支持的 perl 兼容正则表达式 (PCRE) 语法。您应该根据 SED正则表达式重写您的正则表达式或perl改用它。
请注意,SED 没有前瞻功能,因此不支持您尝试使用的正则表达式功能。正如其他人所提到的,它可以在 SED 中使用其他功能来完成。