awk使用案例一例

需求:

对nginx的access.log日志分析,要求最近100次请求中状态值不是200的百分比。

日志格式如下:

192.168.123.6 - - [26/May/2015:23:44:21+0800] "GET /get_seller_info&format=json HTTP/1.1" 200 34679"-" "Dalvik/1.6.0 (Linux; U; Android 4.4.4; MX4 ProBuild/KTU84P)" "-" "3.562"

思路:

1、先处理文件,获取所有的状态值,然后取最后100行进行计算

awk -F" |HTTP/1." ‘{if($10 ~ /^[0-9]/)print $10}‘ access.log |tail -100|awk ‘{if($1!=200)S++}END{if(NR<100) print S*100/NR;else print S}‘‘

2、先取文件最后100行,然后取状态值进行计算

tail -100 access.log |awk -F" |HTTP/1." ‘{if ($10 ~ /^[0-9]/) S[$10]++} END {if(NR<100)print(NR-S[200])/NR;else print (NR-S[200])}‘

两种方法效率比较:

第二种方法效率更高

时间: 2024-08-01 14:36:10

awk使用案例一例的相关文章

awk使用案例总结

Linux Awk使用案例总结(nginx日志统计,文件对比合并等) 知识点: 1)数组 数组是用来存储一系列值的变量,可通过索引来访问数组的值. Awk中数组称为关联数组,因为它的下标(索引)可以是数字也可以是字符串. 下标通常称为键,数组元素的键和值存储在Awk程序内部的一个表中,该表采用散列算法,因此数组元素是随机排序. 数组格式:array[index]=value 1.Nginx日志分析 日志格式:'$remote_addr - $remote_user [$time_local] "

三剑客老大awk相关案例

awk {}花括号里面是动作,外面是条件 取行 NR==(number record)若不输入数字,默认所有行2.取列---列与列之间想隔开,加",或者其他符号"显示oldboy.txt的第4行的第1列 第2列和第4列 awk默认空格是分隔符号,所以后面的第四列一起,一个字符号默认是一刀,除非加了+,将[]+变成整体案例 先指定分隔符号为空格和逗号-F"[ ,]",一个符号相当于一刀取出IP地址比较大小NF是最后一列查看磁盘使用率 既有数字和百分号识别不了 原文地址

awk详细案例分析

awk:报告生成器格式化后显示信息 语法:awk [options] 'script' file1 file2, ...awk [options] 'PARTTERN { action }' file1 file2, ...最常见的action:print,printf awk的基本特征:a.每一次取一行b.根据指定的分隔符(不指定是位空白字符)将该行切割位列,使用$0(整行),$1,$2,$3...(第一列,第二列,...)c.可以指定行号,列号,切割符,操作后分隔符案例:chkconfig

awk使用案例

1.模仿wc的行为,统计一个文本文件的文件的字符数.行数.单词数. awk '{numOfChar+=length($0);numOfWord+=NF}END{print numOfChar" " numOfWord" "NR }' file 2.上面的例子中有个问题,统计的字符数中包含空格,那么不包含空格的字符数要怎么算? awk '{for (i=1; i<=NF; i++) numOfChar+=length($i)}END{print numOfCha

Linux Awk使用案例总结

知识点: 1)数组 数组是用来存储一系列值的变量,可通过索引来访问数组的值. Awk中数组称为关联数组,因为它的下标(索引)可以是数字也可以是字符串. 下标通常称为键,数组元素的键和值存储在Awk程序内部的一个表中,该表采用散列算法,因此数组元素是随机排序. 数组格式:array[index]=value 1.Nginx日志分析 日志格式:'$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_

(转)Awk使用案例总结(运维必会)

以下知识点可能有不对之处,请参考最新Awk学习文章:http://lizhenliang.blog.51cto.com/7876557/1892112 原文:http://blog.51cto.com/lizhenliang/1764025 知识点: 1)数组 数组是用来存储一系列值的变量,可通过索引来访问数组的值. Awk中数组称为关联数组,因为它的下标(索引)可以是数字也可以是字符串. 下标通常称为键,数组元素的键和值存储在Awk程序内部的一个表中,该表采用散列算法,因此数组元素是随机排序.

斗地主案例——单例集合

第一步准备牌: 第二步洗牌: 其中,集合有个静态方法suffle,就是洗牌意思,随机搅乱集合元素顺序: 调用静态方法直接用类名点方法: 第三步发牌: 其中,使用%即模函数,模2的话则有两种结果(0和1):模3则有三种结果(0和1和2): 增强for即for each没有索引,所以轮流发牌只能用for循环,不能使用for each; 索引就是指向有序集合或数组的下标:类似指针: 原文地址:https://www.cnblogs.com/wmqiang/p/10659458.html

cut\grep\awk\sed命令详解

cut\grep\awk\sed命令详解 1.cut命令详解及实例 (1)作用:提取文件中指定的列 语法格式:cut  选项  文件名   (2)选项作用:      -d 分隔符     按照指定的分割符进行分割      -f 列号       指定提取第几列      -c 字符范围  不依赖分割符来分割,而是通过字符范围进行字段提取      -b 字节数     以字节为单位进行分割.    (3)cut实际应用案例. 例1:cut的-d和-f选项的使用,列出/etc/passwd里面

Shell脚本之awk详解

一.基本介绍 1.awk: awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的.awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割. 2.功能:流控制.数学运算.进程控制.内置的变量和函数.循环和判断 3.工作原理: awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理. (1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里 (2)使用内置的变量FS(段的分隔符,默