2017-09-21 2 views
0

Das Layout meiner Protokolldatei ist wie folgt:Wie kann ich meine log-Datei in eine Datenbank oder ein geeignetes Format für eine Datenbank

08/30 06:30:40 0000:00:04 T992 **** 01865888888 860444   ST992         101 T1011    1865888888   Y1016969 A            
08/30 06:35:09 0000:00:03 T992 **** 01865888888    E          101 T1011    1865888888   G1013976 A            
08/30 06:36:50 0000:00:03 T992 **** 01865888888    E          101 T1011    1865888888   W1017933 A            
08/30 06:48:34 0000:00:16 516332 **** 516330     I 516330        101 

Wie kann ich alle Spalten angezeigt werden gleichmäßig, so kann ich einfach diese importieren Daten in eine Datenbank.

Ich habe SED versucht, für Fenster, um mehrere Räume zu entfernen und Komma statt einfügen, aber dann immer noch nicht säumen die Spalten Ich brauche alle 101 zum Beispiel sein Inline- und alle Termine Inline usw.

Wer zu sein Hilfe?

+0

Sie wollen nicht, hier 'sed', Sie' cut' –

Antwort

0

Hier begann ich es für Sie:

sed -r 's/(.{5}) (.{8}) (.{10}) (.{6})/"\1","\2","\3","\4"/' 

Dadurch werden die ersten 4 Felder extrahieren. die Anzahl der Spalten berechnen, in (.{<number>}) setzen die Räume hinzufügen mit dem Ergebnis bekommen ,"\<field number>"

mein Test

echo "08/30 06:48:34 0000:00:16 516332 **** 516330     I 516330 " | sed -r 's/(.{5}) (.{8}) (.{10}) (.{6})/"\1","\2","\3","\4"/' 
+0

Brilliant Antwort und ich glaube, das hat mein Problem gelöst (ich arbeite immer noch daran). Ich war erstaunt, wie schnell mein Fragegott auch antwortete. Danke für deine Zeit beim Betrachten. Ich habe viele Dinge ausprobiert und ausprobiert, um diesen Wunsch zu lösen. Ich habe früher um Hilfe gebeten. :-) – nomishuk

+0

Wie arbeitest du aus einer oberen Reihe mit einer 11-stelligen Nummer dann eine a-stellige Nummer und die zweite Zeile mit einer 1-stelligen Nummer dann einer 11-stelligen Nummer. weil SED-Befehl, den ich oben verwende, einfach nicht zu verstehen ist, hat es nur 1 Zeichen ...... 08/30,06: 17: 48,0000: 00: 36, T992, 0001 01865868888 8688888 ST992 101 T1011 1865868888 Y1014798 A 08/30,06: 17: 48,0000: 00: 36, T992, 1 01865868888 – nomishuk

+0

u. Okaaay. Wie findest du stattdessen ein schnelles Perl- oder PHP-Skript :-) –

Verwandte Themen