仅使用 grep 和 awk 是否可以从日志文件打印 MMM DD HH:MM:SS 加上另一个字段(例如 SRC)?因此,在大型日志文件中仅提取日期、时间和 SRC...
日志中的示例信息:
Oct 19 21:13:00 server kernel: [ 6457.382677] PING:IN=eth0 OUT= MAC=00:00:00:00:00:05:00:00:00:00:00:00:00:00 SRC=192.168.0.101 DST=192.168.0.102 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=52472 DF PROTO=ICMP TYPE=8 CODE=0 ID=2438 SEQ=3
Oct 19 21:13:01 server kernel: [ 6458.385884] PING:IN=eth0 OUT= MAC=00:00:00:00:00:05:00:00:00:00:00:00:00:00 SRC=192.168.0.101 DST=192.168.0.102 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=52719 DF PROTO=ICMP TYPE=8 CODE=0 ID=2438 SEQ=4
预期输出:
Oct 19 21:13:00 SRC=192.168.0.101
答案1
awk
默认情况下使用空格作为字段分隔符,因此只需打印正确的列即可。
$ cat file.txt
Oct 19 21:13:00 server kernel: [ 6457.382677] PING:IN=eth0 OUT=
MAC=00:00:00:00:00:05:00:00:00:00:00:00:00:00 SRC=192.168.0.101
DST=192.168.0.102 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=52472 DF
PROTO=ICMP TYPE=8 CODE=0 ID=2438 SEQ=3
$ awk '{ print $1, $2, $3, $11 }' file.txt
输出:
Oct 19 21:13:00 SRC=192.168.0.101