为什么 sed.exe 不执行任何操作?

为什么 sed.exe 不执行任何操作?

在 Windows 上,我尝试使用 GNU sed 4.0.7Unx工具类

这有效……

sed "s@<time>@<TIME>@g" < input.txt > output.txt

…但是这什么也没做:

sed "s@<time>.+?</time>@@g" < input.txt > output.txt

转义字符没有帮助。知道原因吗?

谢谢。

答案1

sed使用 POSIX 正则表达式语法,又称正则表达式(7)(取决于您是否使用“扩展”或“基本”变体-r)。

非贪婪+?*?量词不存在在 POSIX 正则表达式中;它们更像是 PCRE 的东西。如果你想使用它们,你需要使用perl或一些类似的工具,例如:

perl -pe "s@<time>.+?</time>@@g"

如果必须使用 sed,这通常是一种可接受的解决方法:

sed -r "s@<time>[^<]+</time>@@g"

(请注意,+在(过时的)基本变体中甚至不存在,因此您需要sed -r激活扩展模式。)

相关内容