„Sed“ … ich schaffe es nicht!

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von rudiratlosde, 23.02.2011.

  1. #1 rudiratlosde, 23.02.2011
    rudiratlosde

    rudiratlosde Grünschnabel

    Dabei seit:
    23.02.2011
    Beiträge:
    8
    Zustimmungen:
    0
    Hallo Ihr Wissenden!

    Ich habe eine Aufgabe, die ich seit Tagen nicht vernünftig lösen kann. Ich habe hunderte solcher Textdateien, (die ein Extrakt mit grep sind) die ich weiter verarbeiten möchte….
    Jede Zeile enthält Daten, die ich danach in eine Datenbank importieren will.
    Die Verarbeitungszeit spielt keine Rolle, Zwischenschritte sind kein Problem. Es sollte eine Lösung mit sed sein (habe ich unter DOS zur Verfügung)

    Die Eingabedateien schauen so aus

    0x0001.2.1.0[77.12].29.-1 0x0001 15.09.2007 16:26:35.840000000 Analog-0x0,464.919861
    0x0001.4.-100.-50[24031.3].17000.-1 0x0001 19.03.2008 22:11:25.000000000 Analog-0x0,58934.307222
    0x0001.3.-100.-50[24075.2].15054.-1 0x0001 15.09.2007 04:06:00.000000000 Analog-0x0,541.500267
    0x0001.10.-500.-50[25094.7].16523.-1 0x0005 15.09.2007 17:29:00.000000000 Analog-0x0,6.002055

    Das Ergebnis sollte so ausschauen:

    2;77;12;15.09.2007 16:26:35;464.919861
    4;24031;3;19.03.2008 22:11:25;58934.307222
    3;24075;2;15.09.2007 04:06:00;541.500267
    10;25094;7;15.09.2007 17:29:00;6.002055

    Musterzeilen:
    Den Anhang Ich_habe_hunderte_solcher_Textdateien.doc betrachten

    Ich hoffe jemand kann mir mit ein paar sed Kommandos antworten..

    Danke
     
  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. yai

    yai yet another idiot

    Dabei seit:
    22.01.2007
    Beiträge:
    166
    Zustimmungen:
    0
    für genau solche Probleme gibt es perl.
     
  4. #3 floyd62, 24.02.2011
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Hi,

    kommt sicher auch darauf an, welchen sed du hast, und wie du den aufrufst (DOS command, Cygwin bash, was auch immer), aber wenn du das Ganze schrittweise machst, könnte so etwas funktionieren:
    Code:
    sed -e "s/[^.]*\.//" -e "s/\..*\[/;/" -e "s/\./;/" -e "s/\][^ ]*/;/" -e "s/ [^ ]* //" -e "s/\..[^.]*,/;/"
    
    ... damit konnte ich (mit Cygwin sed aus einem .cmd-Skript) auf jeden Fall mal deine Beispieldaten so verwursten, dass das gewünschte Ergebnis dabei rauskam.

    Gruss, A.
     
  5. Psyjo

    Psyjo Routinier

    Dabei seit:
    15.11.2005
    Beiträge:
    259
    Zustimmungen:
    0
    Ort:
    Hinter'm Berg
    Code:
    sed -n 's/^0x[0-9a-fA-F]\+.\([0-9]\+\).*\[\([0-9]\+\)\.\([0-9]\+\)\].* \([0-9]\{2\}\.[0-9]\{2\}\.[0-9]\{4\} [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\).*,\([0-9.]\+\)$/\1;\2;\3;\4;\5/p'
    Mit GNU sed und einer Bash drunter funktioniert das so.
     
  6. #5 rudiratlosde, 24.02.2011
    rudiratlosde

    rudiratlosde Grünschnabel

    Dabei seit:
    23.02.2011
    Beiträge:
    8
    Zustimmungen:
    0
    Danke für die schnelle Hilfe und euer bemühen...

    Ich verwende GNU sed version 4.2.1 unter Windows7

    Floyd62 danke dein Skript funktioniert.

    Ich habe ca. 1100 Dateien je 90MB zu verarbeiten. Ich hoffe,dass ich alle Varianten des Textes als Muster hatte, es ist schwer so große Dateien zu prüfen. Vor allem sehe ich erst in der Datenbank (die ich auch noch nicht habe)ob alles konsistent ist.
    aber nochmal Danke schaut gut aus...

    Psyjo bei deiner Version kommt eine Fehlermeldung

    sed: -e expression #1, char 1: unknown command: `''
    darauf habe ich ' mit " ersetzt, das ergibt eine leere Datei
     
  7. #6 rudiratlosde, 24.02.2011
    rudiratlosde

    rudiratlosde Grünschnabel

    Dabei seit:
    23.02.2011
    Beiträge:
    8
    Zustimmungen:
    0
    Leider kenne ich Perl nicht. Es wäre schön wenn dein Vorschlag auch das entsprechende Skript beinhalten würde...
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

„Sed“ … ich schaffe es nicht!

Die Seite wird geladen...

„Sed“ … ich schaffe es nicht! - Ähnliche Themen

  1. Mozilla will Thunderbird eine neue Heimat schaffen

    Mozilla will Thunderbird eine neue Heimat schaffen: Eine Projektausschreibung und ein Report auf den Webseiten von Mozilla leiten die endgültige Trennung von Thunderbird und Firefox ein. Weiterlesen...
  2. Alliance for Open Media will lizenzfreien Video-Codec schaffen

    Alliance for Open Media will lizenzfreien Video-Codec schaffen: Eine von Mozilla geschmiedete Allianz von Branchenschwergewichten will eine bessere Alternative zu H.265 als Video-Codec der nächsten Generation...
  3. OSB Alliance stellt Ratgeber für Beschaffer der öffentlichen Hand vor

    OSB Alliance stellt Ratgeber für Beschaffer der öffentlichen Hand vor: Die Open Source Business Alliance (OSB Alliance) hat einen kostenlosen Praxisratgeber herausgegeben, der Beschaffern der öffentlichen Hand...
  4. Für Filmschaffende: Mozilla Popcorn fertiggestellt

    Für Filmschaffende: Mozilla Popcorn fertiggestellt: Die Mozilla Foundation hat parallel zum Start des Projekts »One Millionth Tower« des National Film Board of Canada ihr HTML5 Media Toolkit Popcorn...
  5. HP-UX 11.11 beschaffen

    HP-UX 11.11 beschaffen: Hallo allerseits, wer kann mir einen Tip geben, wie ich an HP-UX 11.11 komme ? HP hat es mal kostenlos angeboten und einem sogar zugeschickt,...