2015-08-12 5 views
0

У меня есть один файл CSV, и мне нужно Баш скрипт для преобразования строки на нем в течение нескольких файлов XML:CSV на несколько XML-файлов

пример CSV файл

MAC Address, Extention, Account, Password 
001122334455,Ext 200,5544332211,1122334455 
554433221100,Ext 300,1122334455,5544332211 

Выход cfg001122334455.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<gs_provision version="1"> 
<mac>001122334455</mac> 
    <config version="1"> 
<!--# Number: 0, 1--> 
    <P271>1</P271> 
<!--# Account Name//RAMAL --> 
    <P270>Ext 200</P270> 
<!--# SIP User ID--> 
    <P35>5544332211</P35> 
<!--# SIP Authenticate ID--> 
    <P36>5544332211</P36> 
<!--# SIP Authenticate Password--> 
    <P34>1122334455</P34> 
<!--# Display Name--> 
    <P3>Ext 200</P3> 
<!--# Accept Incoming SIP from Proxy Only--> 
    <P2347>1</P2347> 
<!--# Preferred Vocoder--> 
    <P57>18</P57> 
<!--# Remove OBP from Route--> 
    <P2305>1</P2305> 
<!--# Unregister On Reboot--> 
    <P81>1</P81> 
</config> 
</gs_provision> 

Выход cfg554433221100.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<gs_provision version="1"> 
<mac>554433221100</mac> 
    <config version="1"> 
<!--# Number: 0, 1--> 
    <P271>1</P271> 
<!--# Account Name//RAMAL --> 
    <P270>Ext 300</P270> 
<!--# SIP User ID--> 
    <P35>1122334455</P35> 
<!--# SIP Authenticate ID--> 
    <P36>1122334455</P36> 
<!--# SIP Authenticate Password--> 
    <P34>5544332211</P34> 
<!--# Display Name--> 
    <P3>Ext 300</P3> 
<!--# Accept Incoming SIP from Proxy Only--> 
    <P2347>1</P2347> 
<!--# Preferred Vocoder--> 
    <P57>18</P57> 
<!--# Remove OBP from Route--> 
    <P2305>1</P2305> 
<!--# Unregister On Reboot--> 
    <P81>1</P81> 
</config> 
</gs_provision> 

Я пробовал некоторые команды awk, но без успеха.

ответ

0

Я хотел бы использовать шаблон PRINTF:

template=$(cat <<'END_OF_XML' 
<?xml version="1.0" encoding="UTF-8" ?> 
<gs_provision version="1"> 
<mac>%s</mac> 
    <config version="1"> 
<!--# Number: 0, 1--> 
    <P271>1</P271> 
<!--# Account Name//RAMAL --> 
    <P270>%s</P270> 
<!--# SIP User ID--> 
    <P35>%s</P35> 
<!--# SIP Authenticate ID--> 
    <P36>%s</P36> 
<!--# SIP Authenticate Password--> 
    <P34>%s</P34> 
<!--# Display Name--> 
    <P3>%s</P3> 
<!--# Accept Incoming SIP from Proxy Only--> 
    <P2347>1</P2347> 
<!--# Preferred Vocoder--> 
    <P57>18</P57> 
<!--# Remove OBP from Route--> 
    <P2305>1</P2305> 
<!--# Unregister On Reboot--> 
    <P81>1</P81> 
</config> 
</gs_provision> 
END_OF_XML 
) 

while IFS=, read -r mac ext acct pass; do 
    printf "$template" "$mac" "$ext" "$acct" "$acct" "$pass" "$ext" > "cfg${mac}.xml" 
done < "$1" 
+0

Он работал хорошо. Спасибо – marloncos

Смежные вопросы