CSV Datei mit sed manipulieren/optimieren/ergänzen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von gholos, 30.10.2013.

  1. gholos

    gholos Grünschnabel

    Dabei seit:
    30.10.2013
    Beiträge:
    1
    Zustimmungen:
    0
    Allgemeines :
    Ich bin mit sed noch ganz am Anfang, awk hab ich noch nicht angefasst und Perl ist
    mir auch noch sehr fremd. Daher tue ich mich hier etwas schwer und habe einen bisherigen Lösungsweg
    der jemanden der tief in der Materie drinsteckt eventuell nur ein Kopfschüttel abringt. Ich hoffe dass ich
    den Weg so weitergehen kann da meine bisherigen Werkzeuge die ich halbwegs anwenden kann, sich
    auf einfache Bash-Skripte beschränken. Verweise auf andere sinnvolle und vor allem hier eher angebrachte
    Programmiersprachen werden mir im Moment nicht viel helfen.

    Zu der Situation :

    Von einem Gerät dessen Logs sich nur auf einer Website ansehen lassen habe ich den Inhalt
    soweit mittels sed herausfiltern können das sämtlicher Ballast weg ist und am Ende alle Logs
    in einer Datei Spaltenweise mit Semikolon getrennt münden. Insgesamt werden auf der Website
    maximal 100 Logeinträge angezeigt.

    Der Log auf dem Gerät wird nicht gelöscht sondern ständig vom Gerät fortgeschrieben, wobei die älteren
    Einträge heraus fliegen. Wenn das Gerät arbeitet erzeugt es im schnitt alle drei bis 20 Minuten einen
    Logeintrag. Ziel ist es später die Seite stündlich zu pollen um so eine Logdatei fortlaufend zu erstellen
    die alle Einträge die im Laufe der Zeit entstehen enthält, wobei Doppeleinträge misslich wären. Da jede
    Zeile ein eindeutiges einmaliges Datum mit Uhrzeit enthält wann das Gerät angefangen hat, habe ich
    zumindestens schon eine Idee im Hinterkopf.

    Nun zur Teilaufgabe wo ich momentan stolpere:
    Die Logdatei mit 9 Spalten soll so manipuliert werden, dass das Datum mit Uhrzeit aus der vierten
    Spalte genommen werden soll, in ein Unix Time Stamp umgewandelt und anschließen als neue Spalte
    in der Zeile aus der es stammt vorne angefügt werden soll. In der vierten und in der fünften Spalte
    soll dann zwischen Datum und Uhrzeit ein Semikolon als Feldtrenner eingefügt werden.
    Spalte Ü1/Ü2/Ü3/Ü7/Ü8/Ü9 enthalten unterschiedliche Zeichen und die Länge variert.
    Der Inhalt dieser Spalten darf nicht verändert werden. Die Spalten Ü4 und Ü5 sind immer gleich
    in der Struktur,Ü4 enthält wann das Gerät angefangen hat, Ü5 wann es fertig war und Ü6 die
    Zeit die es gebraucht hat (zeitliche Differenz von Ü5 und Ü4). Als letztes soll noch die Trenner
    des Datums (Slash) in ein (Mind) abgeändert werden.

    Die CSV Datei sieht Anfangs so aus Feldtrenner Semikolon :
    x ; x ; x ;;;; x ; x ; x
    Ü1Ü2Ü3Ü4Ü5Ü6Ü7Ü8Ü9
    x x x 2013/12/18 03:38:21 2013/12/18 03:50:33 00:11:12 x x x
    x x x 2013/12/18 03:22:57 2013/12/18 03:25:10 00:02:13 x x x


    Gewünscht wäre im ersten Schritt aus dem Datum und der Uhrzeit der vierten Spalten
    einen Unix Time Stamp zu generieren der am Anfang der Zeile vorangestellt wird:

    ÜneuÜ1Ü2Ü3Ü4Ü5Ü6Ü7Ü8Ü9
    1387334301 x x x 2013/12/18 03:38:21 2013/12/18 03:50:33 00:11:12 x x x
    1387333377 x x x 2013/12/18 03:22:57 2013/12/18 03:25:10 00:02:13 x x x


    Gewünscht wäre im zweiten Schritt in die vierte und die fünfte Spalte jeweils zwischen
    Datum und Uhrzeit den bereits verwendeten Feldtrenner Semikolon einzufügen
    ÜneuÜ1Ü2Ü3Ü4Ü4neuÜ5Ü5neuÜ6Ü7Ü8Ü9
    1387334301 x x x 2013/12/18 03:38:21 2013/12/18 03:50:33 00:11:12 x x x
    1387333377 x x x 2013/12/18 03:22:57 2013/12/18 03:25:10 00:02:13 x x x


    und im dritten Schritt dann die Formatierung des Datums zu ändern :

    ÜneuÜ1Ü2Ü3Ü4Ü4neuÜ5Ü5neuÜ6Ü7Ü8Ü9
    1387334301 x x x 2013-12-18 03:38:21 2013-12-18 03:50:33 00:11:12 x x x
    1387333377 x x x 2013-12-18 03:22:57 2013-12-18 03:25:10 00:02:13 x x x


    Ich habe die Suchfunktion des Forums und auch des WWW bereits ausgiebig genutzt und verdanke vielen
    Beiträgen von hier und anderswo den bisherigen tollen Zwischenstand :D.

    Angeblich soll es mit sed gehen einen String zu suchen den Inhalt des Strings zu nehmen an sed weiterzugeben um
    in der Zeile wo dieser gefunden wurde eben solchen ganz an Anfang der Zeile voranzustellen.

    Die Hinweise die ich bisher gefunden habe um bei dem jetzigen Teilstück zu einer Lösung zu kommen zeigen
    zumindestens, dass es irgendwie mit sed funktionieren könnte. Allerdings fällt es mir noch schwer
    die gefundenen Codeschnippsel anzupassen, da ich noch nicht so fitt mit sed bin,
    aber zumindestens nun nicht mehr ganz bei Null stehe.


    Vielen Dank fürs Lesen, ich hoffe ich habe das was mir vorschwebt klar ausgedrückt.
    Wenn nun ein paar Denkanstöße von Euch kommen wäre es super. Ich will keine fertige Lösung
    sondern sed verstehen lernen. Wenn ich mit sed durch bin, kommt awk und dann Perl.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Spröde, 30.10.2013
    Spröde

    Spröde Alter Sack

    Dabei seit:
    22.01.2012
    Beiträge:
    173
    Zustimmungen:
    0
    Meine Güte, was für ein Prosa-Thread. Die Schritte sind vorgegeben, sed vorgeschrieben (viel Spaß mit der Umwandlung des Datumsformates nur mit sed).

    Ich sehe da jedenfalls nichts, was gegen einen Bash-Script ohne sed sprechen würde. Eine fertige Lösung würde mir hier wesentlich einfacher fallen. Ohne vorgeschriebene Schritte und Tools.
     
Thema: CSV Datei mit sed manipulieren/optimieren/ergänzen
Besucher kamen mit folgenden Suchen
  1. csv-datei manipulierenmittels shellscript

Die Seite wird geladen...

CSV Datei mit sed manipulieren/optimieren/ergänzen - Ähnliche Themen

  1. Suche in Datei doppelte Wörter in jeder Zeile bis zum dritten Leerzeichen...

    Suche in Datei doppelte Wörter in jeder Zeile bis zum dritten Leerzeichen...: Ich habe eine Textdatei in der ich Einträge bis zum 3. Leerzeichen mit den restlichen Zeilen (auch nur bis 3. Leerzeichen) vergleichen muss und...
  2. Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen

    Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen: Hallo, ich habe ein Verzeichnis, darin enthalten sind mehrere Dateien. Nun möchte ich alle Dateien (Parameter $1) gegen eine konstante Datei...
  3. Dateiinhalte vergleichen - Neue Sätze dann ausgeben

    Dateiinhalte vergleichen - Neue Sätze dann ausgeben: Liebe Forumsmitglieder, ich benöte mal wieder Eure Hilfe: Ich möchte 2 Dateien vergleichen. Datei-1 hat z.B. 100 Datensätze mit mehreren Feldern...
  4. Dateien selektieren und zählen

    Dateien selektieren und zählen: Hallo, das ist mein erster Beitrag, bitte entschuldigt, falls nicht alles richtig geschrieben ist. Ich muss meine erste Hausaufgabe als...
  5. Timestamp an Inhalt einer Textdatei anfügen

    Timestamp an Inhalt einer Textdatei anfügen: Hallo, ich als neuer, unerfahrener Nutzer von Linux und der bash hätte folgende Frage. Und zwar würde ich gerne mit einem command den Zeitstempel...