bash从日志文件提取ip并保存到ext文本文件
我需要创建一个bash文件来搜索日志文件中包含的所有行bash从日志文件提取ip并保存到ext文本文件,bash,Bash,我需要创建一个bash文件来搜索日志文件中包含的所有行 Aug 9 16:11:46 igs kernel: [ATTS] Caution: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=1.1.1.1 DST=192.168.0.100 LEN=33 TOS=0x00 PREC=0x00 TTL=121 ID=9690 DF PROTO=TCP SPT=601 DPT=12500 LEN=13 Aug 9 16
Aug 9 16:11:46 igs kernel: [ATTS] Caution: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=1.1.1.1 DST=192.168.0.100 LEN=33 TOS=0x00 PREC=0x00 TTL=121 ID=9690 DF PROTO=TCP SPT=601 DPT=12500 LEN=13
Aug 9 16:11:46 igs kernel: [ATTS] Caution: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=2.2.2.2 DST=192.168.0.100 LEN=33 TOS=0x00 PREC=0x00 TTL=121 ID=9689 DF PROTO=TCP SPT=602 DPT=12502 LEN=13
Aug 9 16:11:46 igs kernel: [ATTS] Caution: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=3.3.3.3 DST=192.168.0.100 LEN=33 TOS=0x00 PREC=0x00 TTL=121 ID=9691 DF PROTO=TCP SPT=600 DPT=12503 LEN=13
Aug 9 16:11:46 igs kernel: [ATTS] Caution: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=1.1.1.1 DST=192.168.0.100 LEN=33 TOS=0x00 PREC=0x00 TTL=121 ID=9691 DF PROTO=TCP SPT=600 DPT=12503 LEN=13
然后在“SRC=”中提取IP,并将IP保存到名为“IP.list”的外部文件中,但不要重复相同的IP
ip.list的输出示例
1.1.1.1
2.2.2.2
3.3.3.3
您可以为此使用
awk
和sort
:
awk '/Caution: IN=/ {print substr($11,5)}' infile | sort -u
只需将搜索字符串调整为您想要的(我使用了“小心:IN=“
”)
awk
所做的是,对于匹配搜索字符串的每个参数,它从第五个字符(IP地址的第一个数字)开始打印第十一个参数(“SRC=aaa.bbb.ccc.ddd”)
然后,它的输出通过sort-u
传递,后者首先进行排序,然后删除重复的行
输出是您所期望的:
pax> awk '/Caution: IN=/ {print substr($11,5)}' infile | sort -u
1.1.1.1
2.2.2.2
3.3.3.3
您可以为此使用awk
和sort
:
awk '/Caution: IN=/ {print substr($11,5)}' infile | sort -u
只需将搜索字符串调整为您想要的(我使用了“小心:IN=“
”)
awk
所做的是,对于匹配搜索字符串的每个参数,它从第五个字符(IP地址的第一个数字)开始打印第十一个参数(“SRC=aaa.bbb.ccc.ddd”)
然后,它的输出通过sort-u
传递,后者首先进行排序,然后删除重复的行
输出是您所期望的:
pax> awk '/Caution: IN=/ {print substr($11,5)}' infile | sort -u
1.1.1.1
2.2.2.2
3.3.3.3
sed
也可以这样做:
sed 's/.*SRC=\([0-9.]\+\).*/\1/' infile | sort -u
sed
也可以这样做:
sed 's/.*SRC=\([0-9.]\+\).*/\1/' infile | sort -u
或者使用grep
和coreutils
:
grep Caution: logfile | cut -d= -f5 | cut -d' ' -f1 | sort -u
或者使用grep
和coreutils
:
grep Caution: logfile | cut -d= -f5 | cut -d' ' -f1 | sort -u