Wie kann ich mit grep eine Protokolldatei leeren, um verschiedene überflüssige Informationen zu entfernen?

Wie kann ich mit grep eine Protokolldatei leeren, um verschiedene überflüssige Informationen zu entfernen?

Meine Logdatei hat folgendes Format:

Dec 26 13:11:48 192.168.1.1 kernel: ACCEPT IN=br0 OUT=vlan1 SRC=192.168.1.2 DST=74.125.43.147 LEN=44 TOS=0x00 PREC=0x00 TTL=63 ID=9312 DF PROTO=TCP SPT=11733 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0 OPT (020405B4) 

Jetzt versuche ich, einige überflüssige Informationen zu entfernen, um die Ausgabe lesbarer und übersichtlicher zu machen, und sie in eine neue Datei zu packen.

Das Ergebnis sollte wie folgt aussehen und lediglich die folgenden Informationen enthalten:

Dec 26 13:11:48 192.168.1.2 74.125.43.147 TCP SPT=11733 DPT=80

Wie es geht?

Antwort1

awk '{sub(/PROTO=/, "", $17); print $1,$2,$3,$4,$17,$18,$19}' < logfile.log > processed-logfile.log

Antwort2

Versuchen Sie, mit awk die gewünschten Spalten mit Druckanweisungen auszuwählen und sie in die gewünschte Reihenfolge zu bringen.

Wenn Sie beispielsweise die PID (Prozess-ID) des Prozesses "foo" auf Ihrem System haben möchten, können Sie Folgendes ausführen:

ps -ef | grep foo | grep -v grep | awk '{ print $2 ; }'

verwandte Informationen