Linux中awk的简单使用举例

1 编写脚本selinux.sh,实现开启或禁用SELinux功能
通过sed命令对centos7的/etc/selinux/config文件进行编辑:
开启selinux功能:sed -i.bak ‘s@SELINUX=disabled@SELINUX=enforcing@‘ /etc/selinux/config
关闭selinux功能:sed -i.bak ‘s@SELINUX=enforcing@SELINUX=disabled@‘ /etc/selinux/config

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

awk ‘/UUID/{fstype[$3]++}END{for(i in fstype){print i,fstype[i]}}‘ fstab
‘/UUID/{fstype[$3]++}’ 定义了一个数组fstype,这个数组是以fstab文件中的UUID所在行的,以空格为分隔符号的第3列的文件类型为数组的下标;
{for (i in fstype){print i,fstype[i]}} 数组的遍历,以数组下标为循环条件,然后打印数组下标及数组的值;
【示例】

Linux中awk的简单使用举例

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

 for循环,以字符个数作为循环的条件;
 if判断是否为数字,如果为数字,就做字符串赋值;
 最后打印字符串
【示例】

Linux中awk的简单使用举例

4 解决DOS***生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频 率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT
先写一个监控峰值的脚本,再把脚本放到定时任务中执行;

{ip[$(NF-2)]++}END{for(i in ip){print i,ip[i]}}   以ip地址为下标,遍历一个数组;
{if($2>1)print $1}  打印数组中符合条件的值;
【示例】
 ss -nt | awk -F " +|:" ‘NR>1{ip[$(NF-2)]++}END{for(i in ip){print i,ip[i]}}‘ | awk ‘{if($2>1)print $1}
 */5 * * * * /data/Scripts-44/010_awk.sh 每5分钟执行一次脚本

Linux中awk的简单使用举例
Linux中awk的简单使用举例

Linux中awk的简单使用举例

上一篇:Linux 安装 Tomcat


下一篇:Linux下统计CPU核心数量