Convertire un file CSV in XML con Bash

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.