Linux中awk的简单使用举例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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]}} 数组的遍历,以数组下标为循环条件,然后打印数组下标及数组的值;
【示例】
3 提取出字符串Yd$C@M05MB%9&Bdh7dq+YVixp3vpw中的所有数字
for循环,以字符个数作为循环的条件;
if判断是否为数字,如果为数字,就做字符串赋值;
最后打印字符串
【示例】
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 -F 命令如何指定输出双引号里的内容,求助