GNU sed 中的前瞻正则表达式有什么问题?
- 2024-10-24 08:50:00
- admin 原创
- 218
问题描述:
这就是我正在做的事情(简化示例):
gsed -i -E 's/^(?!foo)(.*)$/bar/' file.txt
我试图将 放在bar
不以 开头的每一行前面foo
。这是错误:
gsed: -e expression #1, char 22: Invalid preceding regular expression
怎么了?
解决方案 1:
sed -i '/^foo/! s/^/bar/' file.txt
-i
就地修改文件/^foo/!
`!仅对不以*foo*开头的行执行下一步操作
^foo`s/^/bar/
将行首改为 bar
解决方案 2:
据我所知,sed
既没有前瞻也没有后瞻。切换到具有类似语法的更强大的语言,例如perl
。
解决方案 3:
您使用了 GNU sed 不支持的 perl 兼容正则表达式 (PCRE) 语法。您应该根据 SED正则表达式重写正则表达式或改用perl
其他语法。
请注意,SED 没有前瞻功能,因此不支持您尝试使用的正则表达式功能。正如其他人提到的,可以使用 SED 中的其他功能来实现。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD