2012-12-21 70 views
1

代替我想找到一個文件中的特定字符串和替換它像以下:查找字符串和換行和凹痕

在文件測試* .XML

<root> 
    <list> 
     <item ID="abc"> 
      <amount>1</amount> 
      <text>TEST</text> 
     </item> 
     <item ID="cde"> 
      <amount>1</amount> 
      <text>TEST 2</text> 
     </item> 
    </list> 
</root> 

替換此與

<root> 
    <list> 
     <item ID="abc"> 
      <amount>0</amount> 
      <text>TEST</text> 
     </item> 
     <item ID="cde"> 
      <amount>1</amount> 
      <text>TEST 2</text> 
     </item> 
    </list> 
</root> 

到目前爲止,我有這樣的:

find . -name "test*" -print | xargs sed -i 's/<item ID=\"abc\">/<item ID=\"abc\">/g' 

嗯,它當然沒有,但我不知道我怎麼能夠「跳過」換行符和空格。我不允許改變凹痕。 我試圖用一行代碼來做,但一個小bash腳本也應該這樣做,但我對bash很缺乏經驗。

回答

0

我寧願使用XML感知的工具來操作XML,這樣就可以保持良好性,字符/實體編碼等

XMLStarlet效果很好。它將允許您使用XPath指定XML中的特定節點並更改這些節點。我認爲你不必擔心縮進等問題。這通常只是格式化。

+0

是的,你可能是對的。我只是覺得我可以使它快速而骯髒。 – CodingGentleman

+0

有時候很快就會變髒。然而有時候,它不是! –