{"id":271,"date":"2009-08-18T19:24:29","date_gmt":"2009-08-18T17:24:29","guid":{"rendered":"http:\/\/www.newstechnology.eu\/it\/?p=271"},"modified":"2016-12-14T10:11:51","modified_gmt":"2016-12-14T09:11:51","slug":"estrarre-colonne-da-un-file-csv-con-linux","status":"publish","type":"post","link":"https:\/\/www.newstechnology.eu\/it\/software\/sistemi-operativi\/linux\/estrarre-colonne-da-un-file-csv-con-linux.html","title":{"rendered":"Estrarre Colonne da Un File CSV con Linux"},"content":{"rendered":"<p style=\"text-align: justify;\">Col <strong>Sistema Operativo Linux<\/strong>, attraverso la <a href=\"http:\/\/it.wikipedia.org\/wiki\/Shell_(informatica)\">Shell dei comandi<\/a> \u00e8 possibile fare praticamente qualunque cosa (tranne il caff\u00e8), l&#8217;importante \u00e8 sapere bene quello che si sta per fare.<\/p>\n<p style=\"text-align: justify;\">In questo articolo spiegher\u00f2 un comando non usato spesso, ma che all&#8217;occorrenza si rivela davvero\u00a0 utile e veloce per gestire <a href=\"http:\/\/it.wikipedia.org\/wiki\/Comma-separated_values\">file CSV<\/a>.<\/p>\n<p style=\"text-align: justify;\">Il <strong>comando in questione si chiama cut<\/strong> e serve per tagliare colonne o parti di una riga.<\/p>\n<p style=\"text-align: justify;\"><!--more--><\/p>\n<p style=\"text-align: justify;\">Generalmente per <strong>lavorare su tabelle<\/strong> utilizziamo software grafici abbastanza efficaci come Excel o Spreadsheet, o addirittura prodotti web come la gestione dei documenti di google.<\/p>\n<p style=\"text-align: justify;\">Con linux si pu\u00f2 direttamente lavorare sul file di testo e generare tabelle da altre tabelle semplicemente con un comando.<\/p>\n<p style=\"text-align: justify;\">Per esempio, supponiamo di avere il nostro file pippo.xls e vogliamo testare il comando cut. Semplicemente salviamo il file pippo.xls in formato <a href=\"http:\/\/www.newstechnology.eu\/it\/wp-content\/uploads\/2009\/08\/comuni.csv\">comuni.csv<\/a>:<\/p>\n<p style=\"text-align: justify;\"><em>Codice Regione;Codice Provincia;Codice Comune;&#8221;Codice Istat del Comune<br \/>\n(formato alfanumerico)&#8221;;&#8221;Codice Istat del Comune<br \/>\n(formato numerico)&#8221;;&#8221;Codice Istat del Comune a 103 province<br \/>\n(formato numerico)&#8221;;&#8221;Codice Istat del Comune a 107 province<br \/>\n(formato numerico)&#8221;;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<br \/>\n01;001; 001 ;001001;1001;1001;1001;Agli\u00e9;Agli\u00e9;;0;3; 315 ;0;NM;3;IVREA;13,3;2.574;2.615;2.616;2.609<br \/>\n01;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<br \/>\n01;001; 003 ;001003;1003;1003;1003;Ala di Stura;Ala di Stura;;0;1; 1.080 ;0;T;2;CIRIE&#8217;;46,1;479;473;483;475<br \/>\n01;001; 004 ;001004;1004;1004;1004;Albiano d&#8217;Ivrea;Albiano d&#8217;Ivrea;;0;3; 230 ;0;NM;3;IVREA;11,7;1.696;1.683;1.700;1.731<br \/>\n01;001; 005 ;001005;1005;1005;1005;Alice Superiore;Alice Superiore;;0;3; 610 ;0;T;3;IVREA;7,0;616;688;694;696<br \/>\n<\/em><\/p>\n<p style=\"text-align: justify;\"><em>&#8230;&#8230;<\/em><\/p>\n<p style=\"text-align: justify;\">Supponiamo che questo file sia l&#8217;elenco dei comuni italiani prelevato dal sito <a href=\"http:\/\/www.istat.it\/strumenti\/definizioni\/comuni\/\">istat.it<\/a>. Questo file ha tanti dati separati dal &#8220;;&#8221;, ma vogliamo solamente la colonna del nome comune e la popolazione residente alla fine 2008. Eseguiamo il comando:<\/p>\n<p style=\"text-align: justify;\"><em>cat pippo.csv | cut -d &#8220;;&#8221; -f 9,22 | sort &gt; comuni_residenti.txt<\/em><\/p>\n<p style=\"text-align: justify;\">Avremo in questo modo sul file comuni_residenti.txt una lista dei comuni ordinata con a fianco la popolazione residente come la seguente:<\/p>\n<p style=\"text-align: justify;\"><em>Abano Terme;19.493<br \/>\nAbbadia Cerreto;289<br \/>\nAbbadia Lariana;3.258<br \/>\nAbbadia San Salvatore;6.775<br \/>\nAbbasanta;2.873<br \/>\nAbbateggio;443<\/em><\/p>\n<p style=\"text-align: justify;\"><em>&#8230;&#8230;.<\/em><\/p>\n<p style=\"text-align: justify;\"><em>Zovencedo;846<br \/>\nZubiena;1.278<br \/>\nZuccarello;367<br \/>\nZuclo;358<br \/>\nZugliano;6.732<br \/>\nZuglio;609<br \/>\nZumaglia;1.148<br \/>\nZumpano;2.275<br \/>\nZungoli;1.277<br \/>\nZungri;2.066<\/em><\/p>\n<p style=\"text-align: justify;\">Si possono vedere altre opzioni digitando da shell:<\/p>\n<p style=\"text-align: justify;\"><em>cut &#8211;help<\/em><\/p>\n<p><em>Usage: cut OPTION&#8230; [FILE]&#8230;<br \/>\nPrint selected parts of lines from each FILE to standard output.<\/em><\/p>\n<p>Mandatory arguments to long options are mandatory for short options too.<br \/>\n-b, &#8211;bytes=LIST\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 select only these bytes<br \/>\n-c, &#8211;characters=LIST\u00a0\u00a0 select only these characters<br \/>\n-d, &#8211;delimiter=DELIM\u00a0\u00a0 use DELIM instead of TAB for field delimiter<br \/>\n-f, &#8211;fields=LIST\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 select only these fields;\u00a0 also print any line<br \/>\nthat contains no delimiter character, unless<br \/>\nthe -s option is specified<br \/>\n-n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (ignored)<br \/>\n&#8211;complement\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 complement the set of selected bytes, characters<br \/>\nor fields.<br \/>\n-s, &#8211;only-delimited\u00a0\u00a0\u00a0 do not print lines not containing delimiters<br \/>\n&#8211;output-delimiter=STRING\u00a0 use STRING as the output delimiter<br \/>\nthe default is to use the input delimiter<br \/>\n&#8211;help\u00a0\u00a0\u00a0\u00a0 display this help and exit<br \/>\n&#8211;version\u00a0 output version information and exit<\/p>\n<p>Use one, and only one of -b, -c or -f.\u00a0 Each LIST is made up of one<br \/>\nrange, or many ranges separated by commas.\u00a0 Selected input is written<br \/>\nin the same order that it is read, and is written exactly once.<br \/>\nEach range is one of:<\/p>\n<p>N\u00a0\u00a0\u00a0\u00a0 N&#8217;th byte, character or field, counted from 1<br \/>\nN-\u00a0\u00a0\u00a0 from N&#8217;th byte, character or field, to end of line<br \/>\nN-M\u00a0\u00a0 from N&#8217;th to M&#8217;th (included) byte, character or field<br \/>\n-M\u00a0\u00a0\u00a0 from first to M&#8217;th (included) byte, character or field<\/p>\n<p>With no FILE, or when FILE is -, read standard input.<\/p>\n<p>&nbsp;<\/p>\n<p>Fonte: <a>www.newstechnology.eu<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p style=\"text-align: justify;\">Col <strong>Sistema Operativo Linux<\/strong>, attraverso la <a href=\"http:\/\/it.wikipedia.org\/wiki\/Shell_(informatica)\">Shell dei comandi<\/a> \u00e8 possibile fare praticamente qualunque cosa (tranne il caff\u00e8), l&#8217;importante \u00e8 sapere bene quello che si sta per fare.<\/p>\n<p style=\"text-align: justify;\">In questo articolo spiegher\u00f2 un comando non usato spesso, ma che all&#8217;occorrenza si rivela davvero\u00a0 utile e veloce per gestire <a href=\"http:\/\/it.wikipedia.org\/wiki\/Comma-separated_values\">file CSV<\/a>.<\/p>\n<p style=\"text-align: justify;\">Il <strong>comando in questione si chiama cut<\/strong> e serve per tagliare colonne o parti di una riga.<\/p>\n<p style=\"text-align: justify;\">\u00a0<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wpai_meta_description":"","footnotes":""},"categories":[15],"tags":[745,742,741,743,45,744],"class_list":["post-271","post","type-post","status-publish","format-standard","hentry","category-linux","tag-campi","tag-colonne","tag-csv","tag-cut","tag-linux","tag-tabelle"],"_links":{"self":[{"href":"https:\/\/www.newstechnology.eu\/it\/wp-json\/wp\/v2\/posts\/271","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.newstechnology.eu\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.newstechnology.eu\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.newstechnology.eu\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.newstechnology.eu\/it\/wp-json\/wp\/v2\/comments?post=271"}],"version-history":[{"count":2,"href":"https:\/\/www.newstechnology.eu\/it\/wp-json\/wp\/v2\/posts\/271\/revisions"}],"predecessor-version":[{"id":2152,"href":"https:\/\/www.newstechnology.eu\/it\/wp-json\/wp\/v2\/posts\/271\/revisions\/2152"}],"wp:attachment":[{"href":"https:\/\/www.newstechnology.eu\/it\/wp-json\/wp\/v2\/media?parent=271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.newstechnology.eu\/it\/wp-json\/wp\/v2\/categories?post=271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.newstechnology.eu\/it\/wp-json\/wp\/v2\/tags?post=271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}