2011-02-15 75 views
1

我有這樣的XML文件中的一個行文件:轉化爲包含所有標籤

<content> 
    <tag1> 
      <innertag1>foo</innertag1> 
      <innertag2>baa</innertag2> 
    </tag> 
    <tag2> 
      <innertag1>foo2</innertag1> 
      <innertag2>baa1</innertag2> 
    </tag2> 
</content> 

,我需要,使用腳本,使用相同的信息的另一個文件,但在一行中:

<content><tag1><innertag1>foo</innertag1><innertag2>baa</innertag2></tag><tag2><innertag1>foo 2</innertag1><innertag2>baa 1</innertag2></tag2></content> 

因爲我需要這種格式來使用grep和sed命令。我該怎麼做?

謝謝

+1

你不知道。您可以使用適當的工具,如xmlstarlet。 – 2011-02-15 21:06:31

+0

這會很好,但我不能使用其他工具,只是主要的工具。無論如何,謝謝 – Julian 2011-02-15 21:13:21

回答

0
tr -d '\n\t' inputfile > temp && echo >> temp && mv temp inputfile 

sed -in ':a;$s/[\n\t]//g;N;ba' inputfile 

sed挑剔版本:

sed -n -e ':a' -e '$s/[\n\t]//g' -e 'N' -e 'ba' inputfile > temp && echo >> temp && mv temp inputfile 

另一種選擇:

perl -i -pe 'chomp unless eof; s/\t//g' inputfile 

或可能:

perl -pe 'chomp unless eof; s/\t//g' inputfile > temp && echo >> temp && mv 

編輯也從輸入文件中刪除製表符。

0

那麼簡單的舊正則表達式呢? s/>\s*</></g

+0

`\ s`不包括`sed`中的換行符。 – 2011-02-15 21:26:28