问题陈述:
使用用户代理A2PC
更改与GENCOM
或PROHIBITED
不匹配的每个用户代理,并保持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"
请帮我解决这个问题
答案 0 :(得分:2)
首先查找您的模式然后执行sub:
# echo \"GENCsOM\" | sed -e '/^"\(GENCOM\|A2PC\)"$/! s/^.*$/PROHIBITED/'
PROHIBITED
# echo \"GENCOM\" | sed -e '/^"\(GENCOM\|A2PC\)"$/! s/^.*$/PROHIBITED/'
"GENCOM"
答案 1 :(得分:0)
sed '/A2PC/ !{
/GENCOM/ ! {
s/$/PROHIBITED/
}
}' YourFile
双重排除而非变更,符合posix