Il parsing di file Excel (con estensione .xlsx
o .xls
) non è un compito immediato in un ambiente Bash puro, poiché questi file non sono semplici file di testo leggibili direttamente dalla shell. Tuttavia, ci sono alcuni strumenti e approcci che permettono di estrarre i dati contenuti in un file Excel e manipolarli da uno script Bash.
In questo articolo, esploreremo come effettuare il parsing di file Excel utilizzando strumenti esterni e come integrarli in un flusso di lavoro in Bash. Analizzeremo principalmente due soluzioni:
- Convertire il file Excel in CSV: Utilizzare strumenti come
ssconvert
oxlsx2csv
per convertire un file Excel in un formato più gestibile, come il CSV, e poi manipolarlo con i comandi standard di Bash. - Utilizzare
in2csv
oxlsx2csv
direttamente in Bash: Esistono strumenti che possono trasformare il file Excel in formato CSV leggibile direttamente.
Il primo approccio consiste nel convertire il file Excel in un file CSV, che è molto più facile da manipolare in Bash. Per fare questo, possiamo usare il comando ssconvert
, parte della suite Gnumeric.
Su sistemi basati su Debian/Ubuntu, puoi installare ssconvert
con il seguente comando:
sudo apt-get install gnumeric
Su altri sistemi, il metodo di installazione potrebbe variare, ma generalmente puoi usare il gestore di pacchetti del sistema.
Supponiamo di avere un file Excel chiamato data.xlsx
. Per convertirlo in CSV, possiamo eseguire il comando:
ssconvert data.xlsx data.csv
Questo creerà un file CSV, che è facilmente leggibile con comandi standard come cat
, awk
, cut
, grep
e così via. Ad esempio, per leggere la prima colonna del file CSV, potresti usare:
awk -F, '{ print $1 }' data.csv
Se desideri evitare di installare un pacchetto più pesante come Gnumeric, esiste un'alternativa leggera chiamata xlsx2csv
, che è un semplice script Python per convertire file .xlsx
in CSV.
Puoi installare xlsx2csv
tramite pip
:
pip install xlsx2csv
Per convertire un file Excel in CSV, usa il seguente comando:
xlsx2csv data.xlsx data.csv
Una volta ottenuto il CSV, puoi manipolarlo in Bash come nel metodo precedente. Ecco un esempio per leggere la seconda colonna:
awk -F, '{ print $2 }' data.csv
Un'altra alternativa interessante è in2csv
, parte della suite csvkit, che permette di leggere direttamente i file Excel e convertirli in CSV, il tutto all'interno della pipeline Bash.
Installa csvkit
con pip
:
pip install csvkit
Puoi convertire e stampare il contenuto di un file Excel direttamente nel terminale con il seguente comando:
in2csv data.xlsx
Puoi anche indirizzare l'output in un file:
in2csv data.xlsx > output.csv
Un esempio completo di script Bash per convertire un file Excel in CSV e manipolarne i dati potrebbe essere:
#!/bin/bash
# Controlla se il file Excel esiste
if [ ! -f "$1" ]; then
echo "File Excel non trovato!"
exit 1
fi
# Converte il file Excel in CSV
ssconvert "$1" output.csv
# Esegui parsing del file CSV (ad esempio, stampa la prima colonna)
awk -F, '{ print $1 }' output.csv
Conclusione
Effettuare il parsing di un file Excel con Bash richiede l'utilizzo di strumenti esterni per la conversione o la lettura dei file Excel, poiché questi non sono nativamente supportati dalla shell. Utilizzando strumenti come ssconvert
, xlsx2csv
o in2csv
, è possibile convertire i file Excel in CSV e quindi manipolare i dati con comandi standard di Bash. Questo approccio è versatile e permette di integrare la gestione di file Excel in un flusso di lavoro completamente basato su Bash.