18 Agosto 2009 di Daniele Frulla
Col Sistema Operativo Linux, attraverso la Shell dei comandi è possibile fare praticamente qualunque cosa (tranne il caffè), l’importante è sapere bene quello che si sta per fare.
In questo articolo spiegherò un comando non usato spesso, ma che all’occorrenza si rivela davvero utile e veloce per gestire file CSV.
Il comando in questione si chiama cut e serve per tagliare colonne o parti di una riga.
Generalmente per lavorare su tabelle utilizziamo software grafici abbastanza efficaci come Excel o Spreadsheet, o addirittura prodotti web come la gestione dei documenti di google.
Con linux si può direttamente lavorare sul file di testo e generare tabelle da altre tabelle semplicemente con un comando.
Per esempio, supponiamo di avere il nostro file pippo.xls e vogliamo testare il comando cut. Semplicemente salviamo il file pippo.xls in formato comuni.csv:
Codice Regione;Codice Provincia;Codice Comune;”Codice Istat del Comune
(formato alfanumerico)”;”Codice Istat del Comune
(formato numerico)”;”Codice Istat del Comune a 103 province
(formato numerico)”;”Codice Istat del Comune a 107 province
(formato numerico)”;Denominazione (italiano/tedesco);Solo denominazione in italiano;Solo denominazione in tedesco;Comune capoluogo di provincia;Zona altimetrica;Altitudine del centro (metri);Comune litoraneo;Comune Montano;Codice Sistema locale del lavoro 2001;Denominazione Sistema locale del lavoro 2001;Superficie territoriale totale (kmq);Popolazione legale 2001 (21/10/2001);Popolazione residente al 31/12/2006;Popolazione residente al 31/12/2007;Popolazione residente al 31/12/2008
01;001; 001 ;001001;1001;1001;1001;Aglié;Aglié;;0;3; 315 ;0;NM;3;IVREA;13,3;2.574;2.615;2.616;2.609
01;001; 002 ;001002;1002;1002;1002;Airasca;Airasca;;0;5; 257 ;0;NM;4;PINEROLO;15,7;3.554;3.684;3.787;3.807
01;001; 003 ;001003;1003;1003;1003;Ala di Stura;Ala di Stura;;0;1; 1.080 ;0;T;2;CIRIE’;46,1;479;473;483;475
01;001; 004 ;001004;1004;1004;1004;Albiano d’Ivrea;Albiano d’Ivrea;;0;3; 230 ;0;NM;3;IVREA;11,7;1.696;1.683;1.700;1.731
01;001; 005 ;001005;1005;1005;1005;Alice Superiore;Alice Superiore;;0;3; 610 ;0;T;3;IVREA;7,0;616;688;694;696
……
Supponiamo che questo file sia l’elenco dei comuni italiani prelevato dal sito istat.it. Questo file ha tanti dati separati dal “;”, ma vogliamo solamente la colonna del nome comune e la popolazione residente alla fine 2008. Eseguiamo il comando:
cat pippo.csv | cut -d “;” -f 9,22 | sort > comuni_residenti.txt
Avremo in questo modo sul file comuni_residenti.txt una lista dei comuni ordinata con a fianco la popolazione residente come la seguente:
Abano Terme;19.493
Abbadia Cerreto;289
Abbadia Lariana;3.258
Abbadia San Salvatore;6.775
Abbasanta;2.873
Abbateggio;443
…….
Zovencedo;846
Zubiena;1.278
Zuccarello;367
Zuclo;358
Zugliano;6.732
Zuglio;609
Zumaglia;1.148
Zumpano;2.275
Zungoli;1.277
Zungri;2.066
Si possono vedere altre opzioni digitando da shell:
cut –help
Usage: cut OPTION… [FILE]…
Print selected parts of lines from each FILE to standard output.
Mandatory arguments to long options are mandatory for short options too.
-b, –bytes=LIST select only these bytes
-c, –characters=LIST select only these characters
-d, –delimiter=DELIM use DELIM instead of TAB for field delimiter
-f, –fields=LIST select only these fields; also print any line
that contains no delimiter character, unless
the -s option is specified
-n (ignored)
–complement complement the set of selected bytes, characters
or fields.
-s, –only-delimited do not print lines not containing delimiters
–output-delimiter=STRING use STRING as the output delimiter
the default is to use the input delimiter
–help display this help and exit
–version output version information and exit
Use one, and only one of -b, -c or -f. Each LIST is made up of one
range, or many ranges separated by commas. Selected input is written
in the same order that it is read, and is written exactly once.
Each range is one of:
N N’th byte, character or field, counted from 1
N- from N’th byte, character or field, to end of line
N-M from N’th to M’th (included) byte, character or field
-M from first to M’th (included) byte, character or field
With no FILE, or when FILE is -, read standard input.
Fonte: www.newstechnology.eu
Lascia un commento