0
我正在使用macOS Sierra,并且正在尝试操作配置文件中的某个键的值。使用sed替换自定义字符串替代命令'/'坏标志
为了实现我使用(这对于简单值正常工作):
sed -i .bak "/^$KEY/s/\(.[^=]*\)\([ \t]*=[ \t]*\)\(.[^=]*\)/\1\2$VALUE/" $CONFIG_FILE
不幸的是,我的字符串$值与许多特殊字符相当复杂,给我的错误:
bad flag in substitute command: '/'
我的$值被声明为:
VALUE='<Request xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" ReturnPolicyIdList="false" CombinedDecision="false"> <Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"> <Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">test </AttributeValue> </Attribute> </Attributes> <Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action"> <Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">testing something</AttributeValue> </Attribute> </Attributes> </Request>'
因为我有双重曲otes是$ VALUE的价值的一部分,我不能使用双引号而不是单引号时声明它...任何想法解决这个问题?
工程就像一个魅力,反正我会建议使用不同的正则表达式,如:“S | \($ KEY [[:空间:]] * * = * \)。* | \ 1'$ VALUE'|“ – fcarvalho