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

linux awk命令怎么用?

Linux awk -F 命令如何指定输出双引号里的内容,求助

在 linux 中使用 awk 或 sed 解析简单的字符串

Linux中awk命令的简单用法

Linux的awk命令简单操作