簡體   English   中英

sed命令上未終止的地址正則表達式

[英]unterminated address regex on sed command

我試圖將XML標記寫入文件。 我希望它位於另一個標簽之上

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

有人可以幫助我確定問題嗎?

刪除sed調用中的單引號:

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

您的預期結果包括afp:AttributeFilterPolicyGroup元素,但您指定的attribute_filter.xml afp:AttributeFilterPolicyGroup存在,我認為實際文件中包含該元素。

重新考慮您是否真的希望使用像sed這樣的面向行的工具來轉換序列化的樹結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM