2013-08-01 86 views
3

我有一個配置文件可能或可能沒有任務註釋掉。如果任務被評論,我想「取消註釋」!sed取消註釋文件中的specfic xml註釋

sed -i '/<!--/d; /-->/d testfile 

我有這個到目前爲止,但它刪除文件中的所有評論。

<!--Comment at the top of the file which should not be removed 

--> 

    <!-- 
    <task> 

    <tag> 
    <tag1>keep this content </tag1> 
    </tag> 

    </task> 
--> 

我只是想刪除任務標記,這將看起來像上面的文件中(註釋不會在同一行)的意見,但保留內容其間。我可以使用sed來執行此操作而不刪除任何其他評論嗎?

+0

你能向我們展示更多的示例XML嗎? – marderh

+0

編輯,以顯示更多的xml – Sarah92

+0

我會使用一個xml解析器爲此 – hek2mgl

回答

3

這可能爲你工作(GNU SED):

sed '/^\s*<!--/!b;N;/<task>/s/.*\n//;T;:a;n;/^\s*-->/!ba;d' file 

這看起來與註釋開頭的行。然後讀入下一行,除非下一行包含<task>標記,否則它會保留。如果下一行確實包含<task>標籤,則刪除第一行,然後打印以下行,直到它刪除的結束註釋標籤。

+0

這是輝煌!謝謝 :) – Sarah92