如何搜索文件以查找具有 SRC= 的行,例如此处?我的意思是我如何使用 awk 在这个文件中找到源 IP 地址,例如
Mar 10 03:17:12 ubuntu kernel: [11045.721649] Type=ScanXMASIN=eth0 OUT= MAC=00:0c:29:a1:51:1c:00:0c:29:23:9d:e4:08:00 SRC=192.168.1.28 DST=192.168.1.27 LEN=40 TOS=0x00 PREC=0x00 TTL=47 ID=6603 PROTO=TCP SPT=47301 DPT=53 WINDOW=1024 RES=0x00 URG PSH FIN URGP=0
Mar 10 03:17:12 ubuntu kernel: [11045.721702] Type=ScanXMASIN=eth0 OUT= MAC=00:0c:29:a1:51:1c:00:0c:29:23:9d:e4:08:00 SRC=192.168.1.30 DST=192.168.1.27 LEN=40 TOS=0x00 PREC=0x00 TTL=42 ID=6802 PROTO=TCP SPT=47301 DPT=5900 WINDOW=1024 RES=0x00 URG PSH FIN URGP=0
Mar 10 03:17:32 ubuntu kernel: [11065.703937] Type=ScanACKIN=eth0 OUT= MAC=00:0c:29:a1:51:1c:00:0c:29:23:9d:e4:08:00 SRC=192.168.1.31 DST=192.168.1.27 LEN=40 TOS=0x00 PREC=0x00 TTL=40 ID=62992 PROTO=TCP SPT=47301 DPT=1521 WINDOW=1024 RES=0x00 URG PSH FIN URGP=0
Mar 10 03:17:32 ubuntu kernel: [11065.706729] Type=ScanXMASIN=eth0 OUT= MAC=00:0c:29:a1:51:1c:00:0c:29:23:9d:e4:08:00 SRC=192.168.1.32 DST=192.168.1.27 LEN=40 TOS=0x00 PREC=0x00 TTL=47 ID=15170 PROTO=TCP SPT=47301 DPT=14442 WINDOW=1024 RES=0x00 URG PSH FIN URGP=0
Run Code Online (Sandbox Code Playgroud)
然后我想得到这个输出:
192.168.1.28
192.168.1.30
192.168.1.31
192.168.1.32
Run Code Online (Sandbox Code Playgroud)
有很多行(100,000),我想搜索 SRC= 然后当我找到行时裁剪 SRC= 并找到 IP 地址
使用AWK
谢谢你们!:)
不幸的是 awk 没有捕获它的组。您可能想要寻找一种更现代的工具来编写单行程序,例如 Perl。
话虽如此,在您的情况下,最快的方法取决于 SRC= 是否始终位于日志中的同一位置。
如果它总是在同一个地方,并且参数总是包含相同数量的等号,你可以在等号和空格上分开你的行并取第 15 个字段:
awk -F'[= ]' '{print $15}'
Run Code Online (Sandbox Code Playgroud)
否则,为了获得更强大的方法,您可以替换掉导致 SRC= 的部分及其后面的部分:
awk '{sub(/.* SRC=/, ""); sub(/ .*/, ""); print;}'
Run Code Online (Sandbox Code Playgroud)
如果您需要计算出现次数,您可以| sort | uniq -c | sort -rn在管道中添加一个惯用语,但这对于 100,000 行是低效的。您最好在前两个步骤中使用 awk 的内置字典类型:
awk '{sub(/.* SRC=/, ""); sub(/ .*/, ""); ips[$0]++;}
END {for (ip in ips) printf("%8d %s\n", ips[ip], ip);}' | sort -nr
Run Code Online (Sandbox Code Playgroud)
两者的输出应如下所示:
7513 192.168.1.28
330 192.168.1.30
103 192.168.1.31
19 192.168.1.32
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1400 次 |
| 最近记录: |