2015-06-16 60 views
-2

我需要追加到一個XML文件殼腳本通過從csv文件讀取添加到

I/P文件圖案 TEST.DAT

account,bill,bill seg 
12345,12445,121 

14456,14467,903 

14456,14467,903 

我需要每一行添加到xml文件示例XML文件

<?xml version="1.0" encoding="UTF-8"?> 

<BusinessConfiguration 
     xmlns="http://www.portal.com/schemas/BusinessConfig" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.portal.com/schemas/BusinessConfig BusinessConfiguration.xsd"> 

     <!-- Sample input file for pin_bill_accts containing parameters for bill run management --> 
     <!-- Modify according to guidelines --> 
     <BillRunConfiguration> 
       <!-- List of DOMs for this bill run --> 
       <DOMList> 
         <DOM>---1</DOM> 
       </DOMList> 
       <BillSegmentList> 
       </BillSegmentList> 

       <!-- List of billing segments for this bill run --> 
       <BillingList> 
       </BillingList> 

我需要添加第2記錄在CSV標記下等

<BillingList> 
        <Account>12345</Account> 
        <Billinfo>12445</Billinfo> 
       </BillingList> 
        <BillingList> 
        <Account>14456</Account> 
        <Billinfo>14467</Billinfo> 
        </BillingList> 

我目前有下面的代碼:

#!/bin/awk -f 

NR==FNR{ a[NR]=$0; next; } 
/<BillingList>/{ 
    print; 
    gsub("'","",a[++i]); 
    n=split(a[i],arr,","); 
    if(n!= 3) { next } 
    print "\t<Account>",arr[1],"</Account>"; 
    print "\t<Billinfo>",arr[2],"</Billinfo>"; 
    next; 
}1 

,但它只是取代了第一條記錄,然後停止。 我對unix完全陌生,所以請幫我解決這個問題。

+1

輸出xml文件是事先存在還是從頭開始創建?你如何閱讀CSV文件?你現在的代碼是什麼樣的? –

+0

我寫了下面的代碼下面的代碼,但它只是刪除了第一個實例#!/ bin/awk -f NR == FNR {NR] = $ 0; 下一個; } //{ print; gsub(「'」,「」,a [++ i]); n = split(a [i],arr,「,」); if(n!= 3){next} print「\ t 」,arr [1],「」; print「\ t 」,arr [2],「」; 下一個; } 1 –

+0

您應該將該代碼添加到問題中,而不是將其添加爲註釋。 – JAL

回答

0

這會給你的段

$ awk -F,          # use comma as field separator 
      'NR>1&&NF{       # skip first line and blank lines 
       print       # print the following 
        "<BillingList>    
         <Account>"$1"</Account> # insert first field 
         <BillInfo>"$2"</BillInfo> # insert second field 
        </BillingList>" 
      }' data.txt 

你可以在正確的位置上,如果你想添加換行符。

+0

嗨,感謝您也可以解釋一下代碼 –

+0

嗨代碼只添加所需的段,但我需要它們追加到相同的XML文件可以告訴我怎麼做,以及 –

+0

<?xml version =「1.0」encoding =「UTF-8」?> --- 1 <! - 此賬單運行計費段的列表 - > 喜我需要在XML標籤前要添加的段可以你告訴我怎麼做 –