PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu awk und Feldtrennung



netlinker
03-04-2006, 15:45
Hallo,

ich habe eine Log-Datei aus der ich gern mit awk Daten holen und umschreiben möchte:

Fri Mar 31 08:08:52 2006 [6524]: username 'user' tty0 from 192.168.0.24 rejected rem_addr=192.168.2.1
Fri Mar 31 08:08:52 2006 [6524]: username 'user was auch immer' tty0 from 192.168.0.24 rejected rem_addr=192.168.2.1

Mein Problem ist jetzt, dass das Leerzeichen als Fieldseparator nicht wirklich geeignet ist, da auch im Usernamen Leerzeichen oder Hochkommata vorkommen können.

Ich suche jetzt nach einer Methode, wie ich es hinbekomme, dass der Text, der innerhalb von zwei Hochkommata steht als ein Wort erkannt wird.

z.B.
datum '' rest = ''
datum 'wert' rest = 'wert'
datum 'wert1 wert2' rest = 'wert1 wert2'
datum 'wert1'' wert2' rest = 'wert1'' wert2'

$1 immer datum, $3 immer rest

Vielleicht habt ihr ja eine Idee.
Ciao Björn

Romanday
03-04-2006, 19:35
Hallo,

ich habe eine Log-Datei aus der ich gern mit awk Daten holen und umschreiben möchte:

Fri Mar 31 08:08:52 2006 [6524]: username 'user' tty0 from 192.168.0.24 rejected rem_addr=192.168.2.1
Fri Mar 31 08:08:52 2006 [6524]: username 'user was auch immer' tty0 from 192.168.0.24 rejected rem_addr=192.168.2.1

Mein Problem ist jetzt, dass das Leerzeichen als Fieldseparator nicht wirklich geeignet ist, da auch im Usernamen Leerzeichen oder Hochkommata vorkommen können.

Ich suche jetzt nach einer Methode, wie ich es hinbekomme, dass der Text, der innerhalb von zwei Hochkommata steht als ein Wort erkannt wird.

z.B.
datum '' rest = ''
datum 'wert' rest = 'wert'
datum 'wert1 wert2' rest = 'wert1 wert2'
datum 'wert1'' wert2' rest = 'wert1'' wert2'

$1 immer datum, $3 immer rest

Vielleicht habt ihr ja eine Idee.
Ciao Björn

REGEX auf $0 mit gsub und dann das Ergebnis einer Variablen zuweisen, oder FS (Field Seperator; bin mir aber nicht sicher) mit Hochkomma überschreiben.