![如何使用 grep 剥离日志文件以删除各种不必要的信息?](https://linux22.com/image/534052/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20grep%20%E5%89%A5%E7%A6%BB%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E4%BB%A5%E5%88%A0%E9%99%A4%E5%90%84%E7%A7%8D%E4%B8%8D%E5%BF%85%E8%A6%81%E7%9A%84%E4%BF%A1%E6%81%AF%EF%BC%9F.png)
我的日志文件格式如下:
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)
现在我正在尝试删除一些不必要的信息,以使输出更具可读性和排列整齐,并将其放入新文件中。
结果应如下所示,并且应仅包含以下信息:
Dec 26 13:11:48 192.168.1.2 74.125.43.147 TCP SPT=11733 DPT=80
怎么做?
答案1
awk '{sub(/PROTO=/, "", $17); print $1,$2,$3,$4,$17,$18,$19}' < logfile.log > processed-logfile.log
答案2
尝试使用 awk 选择带有打印语句的所需列并按所需顺序放置它们。
例如,如果你想要获取系统上进程“foo”的 PID(进程 ID),你可以运行
ps -ef | grep foo | grep -v grep | awk '{ print $2 ; }'