9月6日 awk练习

1、统计/etc/fstab文件中每个文件系统类型出现的次数

方法一
[root@redhat7 app]#grep "^UUID" /etc/fstab |tr -s " "|cut -d " " -f3|sort|uniq -c
      1 swap
      3 xfs
方法二
[root@redhat7 app]#awk '/^UUID/{fs[$3]++}END{for(i in fs){print i,fs[i]}}' /etc/fstab 
swap 1
xfs 3

2、统计/etc/fstab文件中每个单词出现的次数

第一种:grep
[root@redhat7 app]#egrep -o "[[:alpha:]]+" /etc/fstab|sort|uniq -c
第二种:sed
[root@redhat7 app]#sed -r 's/[^[:alpha:]]/\n/g' /etc/fstab|sort|uniq -c 
第三种:awk
[root@redhat7 app]#egrep -o "[[:alpha:]]+" /etc/fstab|awk '{num[$1]++}END{for(i in num){print i,num[i]}}'

3、提取出字符串Yd$C@M05MB%9&Bdh7dq+YVixp3vpw中的所有数字

方法一
[root@redhat7 app]#echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw"|grep -o "[0-9]"
方法二
[root@redhat7 app]#echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw"|sed -r 's/[^0-9]/\n/g'|sed '/^$/d'
方法三
[root@redhat7 app]#echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw"|awk -F "[^0-9]" '{for(i=1;i<=NF;i++){print $i}}'|sed '/^$/d'

4、解决DOS攻击生产案例:根据web日志或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT

#!/bin/bash
#
     >/app/f1
      while true;do
        ss -nt|awk -F "[[:space:]:]+" '/^ESTAB/{ip[$6]++}END{for(i in ip){print i,ip[i]}}'|sort -k2 -nr>/app/f1
         awk '{if($2>=100){system("iptables -A INPUT -s "$1" -j REJECT")};printf "ipaddr=%-15s num= %d",$1,$2}' /app/f1
                          sleep 5m
                done

你可能感兴趣的:(9月6日 awk练习)