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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容