awk作业
1、文件host_list.log 如下格式,请提取”.magedu.com”前面的主机名部分并写入到回到该文件中
1 www.magedu.com
2 blog.magedu.com
3 study.magedu.com
4 linux.magedu.com
5 python.magedu.com
......
999 study.magedu.com
[root@explore ~]# awk -F'[ |.]' '{print $2}' tiqu.txt >> tiqu.txt
[root@explore ~]# cat tiqu.txt
1 www.magedu.com
2 blog.magedu.com
3 study.magedu.com
4 linux.magedu.com
5 python.magedu.com
......
999 study.magedu.com
www
blog
study
linux
python
study
2、统计/etc/fstab文件中每个文件系统类型出现的次数
[root@explore ~]#awk '/^[^#]/{fs[$3]++};END{for(i in fs){print fs[i] i}}' /etc/fstab.bak
3、统计/etc/fstab文件中每个单词出现的次数
[root@explore ~]#cat /etc/fstab |tr ' ' '\n' | tr -s '\n' |awk -v x=-1 '{ word[$1]++}END{for(i in word){print i"===" word[i]}}'
4、提取出字符串Yd$C@M05MB%9&Bdh7dq+YVixp3vpw中的所有数字
[root@exploere2 ~]# awk -F ' ' '{gsub(/[^[:digit:]]/," ",$0);{print $0}}' timu.txt
05 9 7 3
[root@exploere2 ~]# cat timu.txt
Yd$C@M05MB%9&Bdh7dq+YVixp3vpw
5、有一文件记录了1-100000之间随机的整数共5000个,存储的格式100,50,35,89…请取出其中最大和
最小的整数
[root@explore ~]# awk 'BEGIN{srand(); min=int(rand()*10000);for(i=1;i<=5000;i++){dig=int(rand()*10000); min<dig?min=min:min=dig;print dig}print "min is "min }' #最小
[root@explore ~]#awk 'BEGIN{srand(); max=int(rand()*10000);for(i=1;i<=5000;i++){dig=int(rand()*10000); min>dig?min=min:min=dig;print dig}print "min is "min }'#最大
6、解决Dos攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT
[root@explore ~]#ss -nt | awk -F' +|:' -v x=-1 'x=++x{con[$6]++}END{for(i in con){if(con[i]>99)system(" iptables -A INPUT -s "i" -j REJECT")}}' #写入脚本checkcon.sh crontab -e 编辑*/5 * * * * /data/checkcon.sh

浙公网安备 33010602011771号