Frage

Guten Tag

Ich habe eine lokale CSV-Datei mit Werten, die Änderung aufgerufen täglich DailyValues.csv
Ich brauche den Wert Feld category2 und category4 zu extrahieren.
Dann kombinieren, sortieren und Duplikate entfernen (falls vorhanden) aus den extrahierten Werten.
dann speichern Sie es auf eine neue lokale Datei NewValues.txt.

Hier ist ein Beispiel für die DailyValues.csv-Datei:

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

Ich habe einige hilfreiche Parsing Beispiele unter http: // www. php.net/manual/en/function.fgetcsv.php und verwalten alle die Werte des Spalts Wert zu extrahieren, aber nicht wissen, wie es zu beschränken nur die Werte von category2 / 4 dann sortieren und sauber zu extrahieren duplizieren.

Die Lösung Bedürfnisse in PHP, Perl oder Shell-Skript sein.

Jede Hilfe wäre sehr geschätzt.
Vielen Dank im Voraus.

War es hilfreich?

Lösung

Hier ist eine Shell-Skript-Lösung.

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

verwendete ich den Befehl cut nur um Ihnen zu zeigen, dass Sie nur bestimmte Spalten extrahieren kann, da der f Schalter für Schnitt wählt, die Spalten, die Sie extrahieren möchten.

Der u Schalter für Art macht den Ausgang eindeutig sein.

Edit: Es ist wichtig, dass Sie egrep verwenden und nicht grep, da grep einen etwas eingeschränkten regulären Ausdruck Satz verwendet, und egrep hat etwas weitere Einrichtungen

Edit (für Leute, die nur zur Verfügung haben grep):

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

Es produziert einen ganz Overhead, aber noch funktioniert ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top