Mai capitato di disporre di un serie di file in formato csv e di doverli unire per effettuare importazioni dati o altro?
Come fare?
Se i vari files non hanno una riga di intestazione la cosa è abbastanza banale:
cat *.csv > output.csv
E se ogni files avesse una riga di intestazione e, ovviamente, volessimo mantenere solo l’intestazione presente nel primo file?
Decisamente più complicata la storia!
Mi sono messo a buttar giù un paio di righe di PHP e ho risolto così:
output.csv\n"; }
non sarà il massimo come codice ma fa il suo porco lavoro e ci ho messo pochissimo a scriverlo!
Tronfio e orgoglione del risultato ho scoperto poi che con una sola riga di bash scripting si poteva fare tutto:
{ head -n1 "nomefileiniziale.csv"; echo""; for f in *.csv; do tail -n+2 "$f"; echo""; done; } > output.txt
p.s. chiaramente il file di output non deve avere estensione csv altrimenti lo script ciclerà fino a riempirvi l’intero disco!
Vabbè, vedete voi qual’è la soluzione che più vi aggrada e fatene buon uso! 😉