一、awk的使用
1、awk简介
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫 AWK 是因为其取了三位
创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
linux中三剑客功能:
grep:过滤文本
sed:修改文本
awk:处理文本
2、awk [参数] [处理内容] [操作对象]
例1:awk -F : '{print $1}' /etc/passwd 打印以冒号分割文本passwd第一列内容
参数 -F 制定文本分割符(默认空格作为分割符),以冒号作为分割符 -F :
处理内容 '{print $NF}' ,print 打印、$ 变量名、NF 变量值(NF为0打印全部,为1打印第一列)
原文件 处理后的内容
例2:awk '{print $1}' access.log | wc -l 统计第一列ip的数据条数(默认空格分割)
wc 命令用于计算字数。
参数: -c,bytes:统计字节数。
-m,chars:统计字符数。
-w,words:统计字数。
-l,lines:统计行数。
-L,max-line-length:统计最长行的长度。
例3:awk '{print $1}' access.log | uniq | wc -l 统计第一列ip的数据条数,去除重复的(默认空格分割)
uniq 检查文本重复出现的行列
二、sed的使用
创建一个sed.txt文件
1、sed使用
例1:sed '1a 999' sed.txt 在文本文件sed.txt第一行下面新增999
注意:sed.txt内容本身没有变
三、cat使用
例1:cat sed.txt|sort 给文件内容排序
cat sed.txt|sort -r 给文件反向排序
注意:sed.txt内容本身没有变
sort
-r:表示降序排列,默认是升序
-n:按数值大小排序
-t:指定排序时使用的分隔字符,sort命令默认字段分隔符为空格和Tab
-k:通过键排序
例2:cat access.log|awk '{print $7}'|sort|uniq -c|sort -n -k 1 -r
四、uniq用法
1、uniq -c sed.txt
-c: 打印每行出现的次数
-d:打印重复出现的行
结论:uniq只会按照连续重复的去重统计
2、解决连续重复的去重统计问题
uniq -c sed.txt | sort -r 排序后去重
问题:还是有重复的,并没有做到排序去重
改变命令执行顺序:cat sed.txt | sort -r | uniq -c 先查看sed.txt,排序,去重
五、查看处理日志
1、例1:awk '{print $7}' /data/nginx/log/access.log 查看访问了那些接口
2、echo 0>access.log 清空日志
3、tail -n 300 -f access.log 动态查看300行日志
4、awk '{print $7}' /data/nginx/log/access.log|sort|uniq 排序去重查找日志access.log里的ip
awk '{print $7}' /data/nginx/log/access.log|sort|uniq|wc -l 排序去重查找日志access.log里的ip的个数
5、awk '{print $1,$7}' access.log|grep 172.16.227.1 查找某个ip访问接口了那些接口
awk '{print $1,$7}' access.log|grep 172.16.227.1|sort|uniq 进一步排序去重(注意uniq去重之前要先排序)
6、awk '{print $4,$1,$7}' access.log|grep 14/Aug/2022:09:37:13 查找特定时间的访问ip和接口
awk '{print $4,$1,$7}' access.log|grep 14/Aug/2022:09:37:13|wc -l 查找特定时间的访问量
awk '{print $4,$1,$7}' access.log|grep 14/Aug/2022:09:37:13|awk '{print $2}'|sort|uniq|wc -l 特定时间访问量去重
实际压力测试过程中不需要统计不同ip不同访问次数,因为在访问过程中的真实压力是真实的、存在的,不会因为jvm、redis对服务器没有压力
标签:log,access,sed,awk,Linux,print,日志,uniq,三剑客 From: https://www.cnblogs.com/xiao-wlkq/p/16584817.html