csv teil zelle nach datum mit bash/linux shell/linux konsole sotieren
Guten Morgen, kennt jemand eine Moeglichkeit wie ich mit einem Konsolen Befehl eine csv datei neu sortieren kann?
Die csv sieht folgendermassen aus: Spalte 1: Nutzer | Spalte 2: Datum Uhrzeit
Sotieren moechte ich per Datum, das problem ist das Datum und uhrzeit in der selben Spalte stehen.
Gruss Rhovan
3 Antworten
Du könntest awk benutzen, oder einfach sort:
sort -t"|" -k2 unsortiert.csv > sortiert.csv
Das sortiert dir deine "unsortiert.csv" nach Spalte 2 und schreibt das Ergebnis in "sortiert.csv".
Ohne ein kurzes Snippet (zwei bis drei Zeilen) deiner CSV-Datei kann ich dir aber nichts genaueres sagen. Versuch einfach mal obige Code-Zeile. :)
Hallo
Spalte 1: Nutzer | Spalte 2: Datum Uhrzeit
Die Pipe ist also der der Feldtrenner - schön, aber wie genau sehen die Spalten/Felder aus:
Papa Bär|04.01.1983 14:00:00
Mama Bär |02.01.1984 13:00:00
Tochter Bär|01.01.2005 15:00:00
Sohn Bär|03.01.2006 12:00:00
oder eher so:
Papa|04.01.1983-14:00:00
Mama|02.01.1984-13:00:00
Tochter|01.01.2005-15:00:00
Sohn|03.01.2006-12:00:00
- Gibt es immer Vorname und Nachname
- Welches Zeichen trennt die Vor- und Nachname
- Welches Zeichen trennt Datum von Uhrzeit
- Welches Datumsformat wird benutzt?
- Welches Zeitformat kommt zum Einsatz?
- Wie sind die Datensätze voneinander getrennt?
Neben sort kann man da bestimmt auch gut mit awk oder vielleicht auch mit perl arbeiten.
Linuxhase
Da hst du zwar wieder mal Recht, aber selbst in diesem Falle könnte man sed benutzen, um das Ganze in ein sortierbares Format zu bringen, und nach sort noch einmal mit sed zurück wurschteln. :)
Das Problem wird sein, dass es kein Shellkommando für eine Datumssortierung gibt. Du willst die Datumsangaben ja nicht alphabetisch sortieren, sondern kalendarisch. Insofern wirst Du um ein kleines C-Progrämmchen o. ä. vermutlich nicht herumkommen.
Selbst dann wäre es mit sed und sort immer noch ein Einzeiler! Ein Programm oder Skript ist für so etwas Triviales nicht nötig. :)