Domanda

Buon giorno,

Ho un file CSV locale con i valori che cambiano ogni giorno chiamato DailyValues.csv
Ho bisogno di estrarre il campo del valore di categoria2 e category4.
Poi combinare, ordinare e rimuovere duplicati (se presenti) dai valori estratti.
Poi salvarlo in un nuovo NewValues.txt file locale.

Ecco un esempio del file DailyValues.csv:

category,date,value  
category1,2010-05-18,value01  
category1,2010-05-18,value02  
category1,2010-05-18,value03  
category1,2010-05-18,value04  
category1,2010-05-18,value05  
category1,2010-05-18,value06  
category1,2010-05-18,value07  
category2,2010-05-18,value08  
category2,2010-05-18,value09  
category2,2010-05-18,value10  
category2,2010-05-18,value11  
category2,2010-05-18,value12  
category2,2010-05-18,value13  
category2,2010-05-18,value14  
category2,2010-05-18,value30  
category3,2010-05-18,value16  
category3,2010-05-18,value17  
category3,2010-05-18,value18  
category3,2010-05-18,value19  
category3,2010-05-18,value20  
category3,2010-05-18,value21  
category3,2010-05-18,value22  
category3,2010-05-18,value23  
category3,2010-05-18,value24  
category4,2010-05-18,value25  
category4,2010-05-18,value26  
category4,2010-05-18,value10  
category4,2010-05-18,value28  
category4,2010-05-18,value11  
category4,2010-05-18,value30  
category2,2010-05-18,value31  
category2,2010-05-18,value32  
category2,2010-05-18,value33  
category2,2010-05-18,value34  
category2,2010-05-18,value35  
category2,2010-05-18,value07

ho trovato alcuni esempi di analisi utile a http: // www. php.net/manual/en/function.fgetcsv.php e sono riusciti a estrarre tutti i valori della colonna valore, ma non sanno come limitare per estrarre solo i valori di categoria 2/4 quindi ordinare e pulito duplicare.

Le esigenze di soluzioni per essere in PHP, Perl o script di shell.

Qualsiasi aiuto sarebbe molto apprezzato.
Grazie in anticipo.

È stato utile?

Soluzione

Ecco una soluzione script di shell.

egrep 'category4|category2' input.file | cut -d"," -f1,3 | sort -u > output.file

ho usato il comando cut solo per mostrare che è possibile estrarre alcune colonne solo, dato che il passaggio f per sceglie taglio, le colonne che si desidera estrarre.

L'interruttore u per l'ordinamento rende l'uscita di essere unico.

Modifica: E 'importante che si utilizza egrep e non grep, dal momento che grep utilizza un set di un'espressione regolare in qualche modo limitato, e egrep ha un po' di ulteriori strutture

Modifica (per le persone che hanno solo grep disponibili):

grep 'category2' input.file > temp.file && grep 'category4' input.file >> temp.file && cut temp.file -d"," -f1,3 | sort -u > output.file && rm temp.file

Produce piuttosto un sovraccarico, ma funziona ancora ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top