小白到运维工程师自学之路 第五十二集 (三剑客之awk)

awk是一种强大的文本处理工具,常用于Unix或类Unix系统。它按行读取文件,匹配模式并执行相应操作,如字段提取、条件判断和数据转换。文章介绍了awk的基本使用,包括FS、NF、NR变量,以及与sort、uniq-c等命令结合的使用实例,如统计命令使用频率和分析服务器访问日志。
摘要由CSDN通过智能技术生成

一、概述

awk命令是一种在Unix或类Unix系统上使用的文本处理工具。它以行为单位读取输入文件,按照预定义规则对每一行进行处理并生成输出。

通过使用一种简单的编程语言,awk提供了对文本数据进行过滤、处理和转换的强大能力。它可以轻松地提取文本中的特定字段、计算和操作数据、执行条件判断、循环处理等。

二、作用流程

1、读取输入文件:awk以逐行的方式读取输入文件。输入文件可以通过管道传递给awk,也可以作为awk命令的参数。

2、匹配模式:对于每一行,awk会尝试将该行与指定的模式进行匹配。模式可以是正则表达式,也可以是字符串等。

3、执行操作:如果当前行满足匹配模式,awk将执行相应的操作。操作可以是打印行、修改行的内容、计算数据等。

4、循环处理:awk会自动处理输入文件的每一行,重复执行匹配和操作的过程,直到处理完所有行。

5、输出结果:在处理完所有行之后,awk将输出根据操作生成的结果。默认情况下,结果会打印到标准输出(即终端),但也可以重定向到文件或通过管道传递给其他命令。

三、awk的使用

awk格式:awk '作用行 变量' 要修改的文件

awk 'FS'    文本字段的分割符,可以使用空格为占位符

awk 'NF'  过滤空行 

这个命令使用了一个内置变量 NF,它表示当前行中的字段数量。如果字段数量不为零(即非空行),则条件为真。因此,它也会打印所有空行。

 

awk 'NR'  处理数据的行号

awk '$0' 处理整行的数据

这个命令使用了一个条件表达式,即整行内容 $0。如果整行内容不为空,则条件为真。因此,它会打印所有非空行。

 

awk '{print $n}'    处理数据行第几列的数据 这里n代表的是列  

 四、配合awk使用的命令

sort  这个命令用于排序 (默认顺序是:字符、数字、字母)

sort -n  按照顺序进行排序

sort -r 按照逆序进行排序

uniq -c 命令是用来去重 统计次数的

这里可以看到统计我使用次数最多的前五个命令

history | awk '{print $2}' | sort | uniq -c |sort -nr |head -5
首先使用history查看使用过的命令
awk '{print $2}' 用于查看第二列
sort 进行第一次排序
uniq -c 进行去重统计
sort -nr 进行逆序排序
head -5 查看前五行

五、三剑客使用实例

这是一个朋友在上班的时候服务器被攻击了,然后用三剑客查找是哪个IP进行的攻击就用到了以下的命令

cat /var/log/httpd/access_log | grep `date "+%d"` | awk '{print $1}'| sort | uniq -c |sort -nr | head -5
cat用来输出日志
grep筛选当天的日志
awk单独筛选出ip
sort进行排序
uniq -c 进行去重
sort -nr 再进行逆序查看谁访问的最多
head -5 查看前五行

 

awk的使用方式多种多样,我所展示的只是基础的操作

如有错误欢迎各位大佬批评指正,我们共同进步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值