„Sed“ … ich schaffe es nicht!

R

rudiratlosde

Grünschnabel
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:
Anhang anzeigen Ich_habe_hunderte_solcher_Textdateien.doc

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

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

Ähnliche Themen

Mit AWK verschiedene Felder verschiedener Zeilen vergleichen

Creative Labs SoundBlaster Audigy 2 ZS unter Debian / Kernel 3.16

Datum innerhalb einer Datei wandeln dd.mm.jjjj auf jjj-mm-dd

Mein Server versendet SPAM in Massen

skript zum löschen doppelter dateien

Zurück
Oben