我使用grep
创建了一个测试,但它在sed
中无效。
grep -P '(?<=foo)bar' file.txt
这可以通过返回bar
来正常工作。
sed 's/(?<=foo)bar/test/g' file.txt
我期待footest
作为输出,但它不起作用。
答案 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