0

有没有人知道如何替换模式,除非它匹配某些特定模式使用sed

例如,所有的“ foo”都应该被替换,除了“ food

4

2 回答 2

2

这可能对您有用(GNU sed):

sed -r ':a;s/foo([^d]|$)/xxx\1/;ta' file

这将替换foo后面的字符,除非它是d.

于 2013-08-07T10:57:06.133 回答
1

如果您对 sed 的替代方案持开放态度,perl 的环视断言会很有帮助:

$ perl -E '$s="foofoofoodfoofood"; $s=~s/foo(?!d)/bar/g; say $s'
barbarfoodbarfood
于 2013-08-07T09:59:05.740 回答