【发布时间】:2012-11-07 20:46:02
【问题描述】:
我想替换一个字符串,保留前缀,除非它包含特定前缀。
例如,任何像"(*)-bar" 这样的字符串都必须替换为"(*)-blah",除非"(*)" 匹配"baz":
foo-bar => should return foo-blah
baz-bar => should remain baz-bar
到目前为止,我最好的方法是在替换时修剪前缀的最后一个字母:
echo "foo-bar" | sed s/"[^(baz)]-bar"/$1-blah/
【问题讨论】:
-
[^(baz)]并不代表你认为的那样。[^...]匹配不是括号中的字符之一的单个字符。
标签: regex regex-negation