Wie schneidet man ein bestimmtes Feld von einer Linie?Spezifische Felder mit Schnitt oder Awk
Das Problem ist, ich kann cut -d ' ' -f 1,2,3,4,5,9,10,11,12,13,14
nicht verwenden, da das Feld ändert.
Lassen Sie uns sagen, ich habe eine Datei namens/var/log/Test, und eine der Zeilen in der Datei sieht wie folgt aus:
Apr 12 07:48:11 172.89.92.41 %ASA-5-713120: Group = People, Username = james.robert, IP = 219.89.259.32, PHASE 2 COMPLETED (msgid=9a4ce822)
Ich brauche nur den Benutzernamen und Datum/Uhrzeit zu erhalten (bitte Note Spalten ändern sich ständig, deshalb habe ich den Username = james.robert passen müssen und 12. April 07:48:11
Wenn ich.
grep "james" /var/log/tes | cut -d ' ' -f 1,2,3,4,5,9,10,11,12,13,14
nicht für mich arbeiten So hat es um den Benutzernamen zu vergleichen e und druckt nur Benutzername und Daten/Zeit. Irgendwelche Vorschläge?
Ok, so, wenn ich dies:
awk -F'[ ,]' '$12~/username/{print $1,$2,$3,$12}' /var/log/test
aber es funktioniert für einige Nutzer, aber nicht die anderen, weil Felder in Bewegung bleiben.
Die Probe Ausgabe dieses Befehls ist:
12 Apr 06.00.39 james.robert
Aber wenn ich auf diesem Benutzernamen diesen Befehl versuchen, funktioniert es nicht. Siehe unten:
hier ist ein weiteres Beispiel dafür, dass mit dem obigen Befehl nichts angezeigt:
Apr 8 12:16:13 172.24.32.1 %ASA-6-713228: Group = people, Username = marry.tarin, IP = 209.157.190.11, Assigned private IP address 192.168.237.38 to remote user
Ist das erste Feld immer das Datum? –
ja ist es. aber der Benutzername bleibt in Bewegung. –
Wenn Sie bitte mehr als einen Datensatz als Beispiel veröffentlichen könnten. Sie wurden von ein paar von uns gefragt. Wir schießen im Dunkeln und können Ihre Randfälle nicht erraten. – JNevill