2015-07-20 58 views
0

我有一個XML文件,例子:sed的:刪除標籤的XML文件中的

<permission>hudson.model.Item.Read:signum</permission> 
<permission>hudson.model.Item.Write:signum</permission> 
<permission>hudson.model.Item.Configure:signum</permission> 
<permission>hudson.model.Item.Read:signum2</permission> 
<permission>hudson.model.Item.Write:signum2</permission> 
<permission>hudson.model.Item.Configure:signum2</permission> 

我想與刪除所有部分:

<permission>text:signum</permission> 

我試圖用:

sed -i "s/<permission>.*(:danilo<\/permission>)//g" $URL_FILE 

有人可以幫助我嗎?

回答

2

sed處理XML。使用正確分析輸入的正確的XML處理工具。我通常使用xsh

open file.xml ; 
for //permission if xsh:matches(., ':signum$') delete . ; 
save :b ; 
+0

謝謝,但我不是管理員在這臺機器。這是需要使用殼... – Danilo

+0

@達尼洛然後告訴管理員,你需要工具來處理XML。 – hek2mgl

+0

@ hek2mgl如果可能的話,我更喜歡使用韌皮。我的最後一個選擇是要求工具.. – Danilo

0

你必須躲避/在</permission>,也d命令將允許你刪除一行匹配模式 - 如果我理解在沒有合適的工具,你的要求正確

sed '/<\/permission>/d' $file 
+0

它可能是行或不行。我的意思是這是所有文字與空格,新行等。我想刪除只是與 anywords和點的部分:signum Danilo

+0

用於刪除兩個模式之間的行使用'sed'/開始/,/結束/ D'而在你的情況下,start =「」,end =「:signum <\/permission>」 - 它也會影響到兩行在同一行的行 – Fiximan

+0

我試過了,但它不起作用。這個命令刪除了所有東西...不僅僅是從到:signum ... – Danilo