2012-01-02 188 views
0

我有這樣如何使用shell腳本在xml文件中添加新標籤?

<changeSet id="1" author="naveen" dbms="oracle"> 
     <sqlFile path="/appl/Liquibase/sql/IntialVersion.sql" /> 
    </changeSet> 
    <changeSet id="2" author="naveen" dbms="oracle"> 
     <sqlFile path="/appl/Liquibase/sql/FirstRev.sql" /> 
    </changeSet> 
    <changeSet id="3" author="naveen" dbms="oracle"> 
     <sqlFile path="/appl/Liquibase/sql/23_12_2011.sql" /> 
    </changeSet> 

我想添加一個新的變更標籤象下面這樣使用shell腳本

<changeSet id="4" author="naveen" dbms="oracle"> 
     <sqlFile path="/appl/Liquibase/sql/24_12_2011.sql" /> 
    </changeSet> 

有沒有什麼簡單的辦法在shell腳本執行此操作的xml文件?我還必須在標籤中更改id和sql文件名稱。

+2

'echo''>> file.xml'。它不會有效,但它是xml文件中的新標記... – 2012-01-02 16:12:52

回答

0

這不是一個真正的格式良好的XML文件,但如果你只是想附加到文件末尾,然後用echocat命令及其輸出發送到文件的末尾用>>運營商。

+0

我不想在最後添加它。它不是完整的XML。這是我的完整XML文件的一部分。我想在使用shell腳本的xml文件之間的前一個標記之後添加此標記。任何幫助? – 2012-01-03 08:20:49

+0

你可以顯示你的完整的XML結構?這將更容易幫助。 – 2012-01-03 08:42:43

1

快速,骯髒,不可靠。不解析XML - 這只是假設您的輸入文件將始終保留當前的行格式。

貓的test.xml

<intro> 
a\b&c; 
d$e 
</intro> 
<changeSet id="1" author="naveen" dbms="oracle"> 
     <sqlFile path="/appl/Liquibase/sql/IntialVersion.sql" /> 
    </changeSet> 
    <changeSet id="2" author="naveen" dbms="oracle"> 
     <sqlFile path="/appl/Liquibase/sql/FirstRev.sql" /> 
    </changeSet> 
    <changeSet id="3" author="naveen" dbms="oracle"> 
     <sqlFile path="/appl/Liquibase/sql/23_12_2011.sql" /> 
    </changeSet> 
<outro> 
</outro> 

確定上次變更標籤的行數

line_no="`grep -n '</changeSet>$' test.xml | cut -f1 -d: | tail -n 1`" ; echo "$line_no" 

添加新的變更

[[ -n "$line_no" ]] && sed "$line_no"'s#$#\n<changeSet id="4" author="naveen" dbms="oracle">\n <sqlFile path="/appl/Liquibase/sql/24_12_2011.sql" />\n</changeSet>#' test.xml > test.xml.new 

貓test.xml.new

<intro> 
a\b&c; 
d$e 
</intro> 
<changeSet id="1" author="naveen" dbms="oracle"> 
     <sqlFile path="/appl/Liquibase/sql/IntialVersion.sql" /> 
    </changeSet> 
    <changeSet id="2" author="naveen" dbms="oracle"> 
     <sqlFile path="/appl/Liquibase/sql/FirstRev.sql" /> 
    </changeSet> 
    <changeSet id="3" author="naveen" dbms="oracle"> 
     <sqlFile path="/appl/Liquibase/sql/23_12_2011.sql" /> 
    </changeSet> 
<changeSet id="4" author="naveen" dbms="oracle"> 
    <sqlFile path="/appl/Liquibase/sql/24_12_2011.sql" /> 
</changeSet> 
<outro> 
</outro> 
相關問題