Convertire un file CSV in XML con Bash

La conversione di un file CSV in formato XML può essere necessaria quando si lavora con diversi tipi di software o sistemi che supportano specificamente uno di questi formati. Sebbene strumenti avanzati come Python o software dedicati siano spesso utilizzati, Bash può essere una soluzione semplice ed efficace per compiti basilari.

Supponiamo di avere un file CSV chiamato input.csv con il seguente contenuto:


id,name,age
1,John,30
2,Jane,25
3,Bob,22

Quindi creiamo il codice principale:


#!/bin/bash

# Verifica dei parametri di input
if [ "$#" -ne 2 ]; then
    echo "Uso: $0 input.csv output.xml"
    exit 1
fi

# File di input e output
input_file="$1"
output_file="$2"

# Controllo dell'esistenza del file CSV
if [ ! -f "$input_file" ]; then
    echo "Errore: Il file $input_file non esiste."
    exit 1
fi

# Inizio del file XML
echo "<root>" > "$output_file"

# Leggi il file CSV riga per riga
while IFS= read -r line || [ -n "$line" ]; do
    if [[ $header_processed != "true" ]]; then
        # Leggi l'intestazione (prima riga del CSV)
        IFS=',' read -r -a headers <<< "$line"
        header_processed="true"
    else
        # Leggi il contenuto delle righe successive
        IFS=',' read -r -a fields <<< "$line"
        echo "    <record>" >> "$output_file"
        for i in "${!headers[@]}"; do
            echo "        <${headers[i]}>${fields[i]}</${headers[i]}>" >> "$output_file"
        done
        echo "    <record>" >> "$output_file"
    fi
done < "$input_file"

# Chiusura del file XML
echo "</root>" >> "$output_file"

echo "Conversione completata: $output_file"

Ecco come appare il file output.xml:


<root>
    <record>
        <id>1</id>
        <name>John</name>
        <age>30</age>
    </record>
    <record>
        <id>2</id>
        <name>Jane</name>
        <age>25</age>
    </record>
    <record>
        <id>3</id>
        <name>Bob</name>
        <age>22</age>
    </record>
</root>

Conclusione

Questo script Bash offre un metodo rapido per convertire file CSV in XML senza dover installare software aggiuntivo. È particolarmente utile per file semplici e scenari in cui una soluzione leggera è sufficiente. Per progetti più complessi, linguaggi come Python offrono librerie più potenti per lavorare con formati strutturati come XML e CSV.

Torna su