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