2011-08-22 71 views
0

我必須使用從Excel導出的巨大XML文件。使用sed重命名

文件看起來是這樣的:

<Row> 
<Data>some data..</Data> 
<Data>some data..</Data> 
<Data>some data..</Data> 
<Data>some data..</Data> 
<Data>some data..</Data> 
<Data>some data..</Data> 
<Data>some data..</Data> 
<Row> 

大約有2000行元素。

所以總有一個行標籤有7個數據子標籤。現在我想重新命名每個第一個數據標籤爲'一',第二個爲'第二'等。

什麼是正確的sed語法來做到這一點?

+1

你所說的 「重命名」 是什麼意思?你想要替換「一些數據..」部分,還是實際更改標籤? – Sorpigal

+0

我不認爲sed是做這項工作的正確工具。你有沒有考慮過使用python或Perl腳本來做到這一點? –

+0

Sed可能不是最好的*工具,但我很難說這個工作是錯誤的。 – Sorpigal

回答

2

考慮用awk,而不是...

BEGIN { 
    NUM[1]="one" 
    NUM[2]="two" 
    NUM[3]="three" 
    NUM[4]="four" 
    NUM[5]="five" 
    NUM[6]="six" 
    NUM[7]="seven" 
} 

/<Row/{ 
    print 
    for(i=1;i<8;i++) { 
     getline 
     sub(/Data/, NUM[i]);print 
    } 
} 
/<\/Row/{print} 

輸出:

$ awk -f r.awk input 
<Row> 
<one>some data..</one> 
<two>some data..</two> 
<three>some data..</three> 
<four>some data..</four> 
<five>some data..</five> 
<six>some data..</six> 
<seven>some data..</seven> 
</Row>