2015-05-29 4 views
0

Я пытаюсь записать XML-тег в файл. и я хочу, чтобы быть выше другого тегаunterminated address regex on команда sed

Script.sh

sudo chmod 777 attribute-filter.xml 
configure_attribute_filter_tag1='<afp:AttributeFilterPolicy id="uid">' 
configure_attribute_filter_tag12='</afp:AttributeFilterPolicy>' 
    configure_attribute_filter_var='<afp:AttributeFilterPolicy id="releaseTransientIdToAnyone">' 
     sed -i '/'$configure_attribute_filter_var'/i \'"$configure_attribute_filter_tag1"'' attribute-filter.xml 
    sed -i '/'$configure_attribute_filter_var'/i \'"$configure_attribute_filter_tag12"'' attribute-filter.xml 

атрибутов filter.xml

<afp:AttributeFilterPolicy id="releaseTransientIdToAnyone"> 
    <afp:PolicyRequirementRule xsi:type="basic:ANY"/> 

    <afp:AttributeRule attributeID="transientId"> 
     <afp:PermitValueRule xsi:type="basic:ANY"/> 
    </afp:AttributeRule> 

</afp:AttributeFilterPolicy> 

Ожидаемый результат:

<afp:AttributeFilterPolicyGroup id="ShibbolethFilterPolicy" 
            xmlns:afp="urn:mace:shibboleth:2.0:afp" xmlns:basic="urn:mace:shibboleth:2.0:afp:mf:basic" 
            xmlns:saml="urn:mace:shibboleth:2.0:afp:mf:saml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xsi:schemaLocation="urn:mace:shibboleth:2.0:afp classpath:/schema/shibboleth-2.0-afp.xsd 
                 urn:mace:shibboleth:2.0:afp:mf:basic classpath:/schema/shibboleth-2.0-afp-mf-basic.xsd 
                 urn:mace:shibboleth:2.0:afp:mf:saml classpath:/schema/shibboleth-2.0-afp-mf-saml.xsd"> 
    <afp:AttributeFilterPolicy id="uid"> 
    </afp:AttributeFilterPolicy> 

     <afp:AttributeFilterPolicy id="releaseTransientIdToAnyone"> 
      <afp:PolicyRequirementRule xsi:type="basic:ANY"/> 

      <afp:AttributeRule attributeID="transientId"> 
       <afp:PermitValueRule xsi:type="basic:ANY"/> 
      </afp:AttributeRule> 

     </afp:AttributeFilterPolicy> 
    </afp:AttributeFilterPolicyGroup> 

ТЕКУЩ Выполнения script.sh

sed: -e expression #1, char 27: unterminated address regex 
sed: -e expression #1, char 27: unterminated address regex 

Может кто-нибудь помочь мне определить проблему?

+1

Я уверен, что вы перепутали себя с вашими заявлениями sed. –

ответ

1

Отбросьте одиночные кавычки из SED вызова:

sed -i "/$configure_attribute_filter_var/i $configure_attribute_filter_tag1" attribute-filter.xml 

Ваш ожидаемый результат включает в себя afp:AttributeFilterPolicyGroup элемент, который отсутствует ПЗУ attribute_filter.xml, что вы задаете, я понимаю, что сам файл содержит указанный элемент.

Пересмотрите, хотите ли вы преобразовать сериализованную древовидную структуру с помощью ориентированного на линию инструмента, такого как sed.

Смежные вопросы