Analizzare un file CSV estrarre alcuni dei valori ma non tutti
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.
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 ...