sed替换除匹配字符串之外的字符串

sed替换除匹配字符串之外的字符串,sed,Sed,问题陈述: 用用户代理禁用的更改每个与A2PC或GENCOM不匹配的用户代理,并保持GENCOM和A2PC不变 表达方式: echo \"GENCOM\" | sed -r -e 's/(^((?!A2PC)(?!GENCOM).)*$)/PROHIBITED/g' 错误: sed: -e expression #1, char 41: Invalid preceding regular expression 我删除了-r,然后没有抛出错误,但它不起作用 echo \"GENDFGGH\"

问题陈述:

用用户代理
禁用的
更改每个与
A2PC
GENCOM
不匹配的用户代理,并保持
GENCOM
A2PC
不变

表达方式:

echo \"GENCOM\" | sed -r -e 's/(^((?!A2PC)(?!GENCOM).)*$)/PROHIBITED/g'
错误:

sed: -e expression #1, char 41: Invalid preceding regular expression
我删除了-r,然后没有抛出错误,但它不起作用

echo \"GENDFGGH\" | sed  -e 's/(^((?!A2PC)(?!GENCOM).)*$)/PROHIBITED/g'
"GENDFGGH"

请帮助我了解此解决方案

首先查找您的模式,然后执行以下步骤:

# echo \"GENCsOM\" | sed -e '/^"\(GENCOM\|A2PC\)"$/! s/^.*$/PROHIBITED/'
PROHIBITED
# echo \"GENCOM\" | sed -e '/^"\(GENCOM\|A2PC\)"$/! s/^.*$/PROHIBITED/'                                                                        
"GENCOM"

双重排除,而不是更改,符合posix标准

Hi。它不好用。nksvm82:/var#echo \“GENCOM\”sed-e'/^(GENCOM\ | A2PC)$/!s/^.*$/probited/'回答-->禁止。你能告诉我为什么我的系统不工作吗。我还可以使用sed-e's/expression/substitution/g'格式的命令来表示表达式,这样我就可以在不更改代码的情况下获得解决方案。提前感谢失败,因为引用,我将更新帖子@user3607508
sed '/A2PC/ !{
   /GENCOM/ ! {
      s/$/PROHIBITED/
      }
   }' YourFile