lookbehind在sed工作吗?

时间:2014-09-29 23:02:45

标签: regex sed grep lookbehind

我使用grep创建了一个测试,但它在sed中无效。

grep -P '(?<=foo)bar' file.txt

这可以通过返回bar来正常工作。

sed 's/(?<=foo)bar/test/g' file.txt

我期待footest作为输出,但它不起作用。

2 个答案:

答案 0 :(得分:20)

GNU sed不支持外观断言。您可以使用更强大的语言(如Perl)或可能使用支持Perl样式正则表达式的ssed进行实验。

perl -pe 's/(?<=foo)bar/test/g' file.txt

答案 1 :(得分:16)

请注意,大多数情况下,您可以使用替换字符串中的捕获组和反向引用来避免lookbehind(或前瞻):

sed 's/\(foo\)bar/\1test/g' file.txt