csv teil zelle nach datum mit bash/linux shell/linux konsole sotieren

3 Antworten

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

Woher ich das weiß:Eigene Erfahrung – Ich benutze seit 2007 Linux und habe LPIC101 und LPIC102

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. :)

1

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. :)

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. :)

0
@TeeTier

Es hängt wohl auch davon ab, wie das Datum formuliert ist. Wenn Tag/Monat/Jahr alle vollnumerisch angegeben sind, dann mag das hinhauen. Aber spätestens bei textuellen Monatsnamen wird das ein ziemlich langer Einzeiler.

0
@dan030

OK, da hast du dann natürlich Recht! Ich habe jetzt nur an numerische Formatierung gedacht. :)

0

Was möchtest Du wissen?