awk的使用---业务需求

awk是按照流来处理的,所以处理1-5G的文本数据相对还是可以的!

规定日志格式

$17 为domainname

$19 为request

$21 为响应状态码

应用1: 匹配统计F5日志中,含有某个域名的数量

可以按照以下方法来套

[[email protected] scripts]# awk -F:  ‘$1=="root" {print $0}‘ /etc/passwd | wc -l
1

对以上进行改版,因为统计的时候利用了wc -l 进行了,现在不需要wc -l ,awk完成统计

[[email protected] scripts]# awk -F:  -v n=0 ‘{if($1=="root") n++;}  END{print n}‘ /etc/passwd 
1

-v 可以指定变量,在 awk ‘‘中利用变量的时候直接使用,不需要"$n" 这个地方要区别shell

注意: 以下语句,默认不指定n变量的时候,虽然可以出结果,是因为在n++的时候会默认设置n为0,但是这样会出现bug,当没有匹配的时候,去大于n的时候就不是0而是空

[[email protected] scripts]# awk -F:   ‘{if($1=="root") n++;}  END{print n}‘ /etc/passwd 
1

bug:

[[email protected] scripts]# awk -F:   ‘{if($1=="rooot") n++;}  END{print n}‘ /etc/passwd 

[[email protected] scripts]#

应用2: 使用shell中的变量和定义多变量 和逻辑运算符

&& 逻辑与

~ 匹配字符串

-v key1=value1 -v key2-values

原型:

awk -v t=0 -v
domain="$domain" -v request="/main/detail" -v code=500  ‘$17==domain && $19 ~ request
&& $21 ==code {t++} END{print t}‘ access.log

0

测试语句:

[[email protected] scripts]# awk -F: ‘$1=="root" && $3==0 {print $0}‘ /etc/passwd
root:x:0:0:root:/root:/bin/bash

注意:

判断匹配的方法:

1)$n~正则表达式

2)if($n~正则表示式) print $

如果你的awk中使用了 BEGIN语句,就一定要使用 if 不能使用模式匹配,否则报错

如:

报错:

[[email protected] scripts]# awk -F: ‘$1=="root" && $3==0 BEGIN{n=0} {n++} END{print n}‘ /etc/passwd

awk: $1=="root" && $3==0 BEGIN{n=0} {t++} END{print t}

awk:                     ^ syntax error

改为:

[[email protected] scripts]# awk -F: ‘BEGIN{n=0} {if($1 =="root" && $3==0)n++} END{print n}‘ /etc/passwd
1

应用3: awk中的数组

3 指定域名的

[[email protected]ak001 f5-log]$ awk ‘$17 =="gold.dianpingfang.com" {++domain[$21]} END {for(k
in domain) print k,domain[k]}‘ access.log

2

200 4498

301 2

500 15

302 321

304 2

时间: 2024-08-09 12:57:54

awk的使用---业务需求的相关文章

java编程排序之自定义类型的集合,按业务需求排序

自定义引用类型放入集合中,按实际业务需求进行排序的两种思路 第一种思路: (1)自定义实体类实现java.lang.Comparable接口,重写public int compareTo(Object obj)方法.自定义业务比较规则 (2)利用java.util.Collections类的静态方法sort(List<自定义类型> list)进行排序(默认升序)或者.自己编写排序工具类.冒泡+compareTo(obj)方法 第二种思路 (1)自己编写业务比较规则类.实体类不用实现任何借口.业

我眼中BA(业务需求分析师)的技能广度和深度

BA,或者称业务分析师,是企业数字能力和业务能力之间的沟通桥梁.随着企业数字转型的进一步深化,相信对BA这样的技能需求会越来越多,只是未必都用“BA/业务分析师”这样的Title. ThoughtWorks在创建之初,就有BA这样一个职位.Lupi Messenger是我的一个同事,她是ThoughtWorks的第一批BA,到现在为止做了18年,孙女都已经上小学了,我很仰慕.这二十年间变化很大,需求分析方法从最初的敏捷用户故事,演进到现在精益为基础的需求分析方法,BA的技能要求也在不断变化.整理

产品开发:业务需求至上

产品开发篇(业务需求至上): TODO: 1,关于产品开发中,最重要的是概要设计(业务需求) 2,业务需求里,涵盖了严谨的业务逻辑和复杂数据操作 讲解篇:1,业务逻辑复杂型,2,复杂数据操作篇 1,业务逻辑复杂型 var infoflag = true; //是否需要给父页面赋值 True 弹出框口 需要 False 打开新页面 不需要 var handleurl = "/Handle/UserRoleManage/UserHandler.ashx"; //一般处理程序路径 var c

【案例实战】餐饮企业分店財务数据分析系统解决方式:业务需求

[案例实战]餐饮企业分店財务数据分析系统解决方式:业务需求 一.建设目的 某餐饮集团须要将每一个分店的財务状况进行分析,眼下使用的是excel来存储查看各区域的收入情况,每一个区域各年月的收入情况汇总数据都是通过多sheet的方式展示,因为此餐饮集团是一个比較大型的餐饮集团,非常多区域都有分店.所以,单是针对收入情况,就须要做非常多个excel来进行收入情况汇总存储.这样导致查询历史数据非常麻烦.不利于数据的存档规整.制作成本太高,浪费有效人力资源等非常多弊端.因此採用数据分析系统来解决这些弊端

1亿妹纸大姨妈的神器美柚:上云要切合业务需求,更要货比三家

美柚中国女性垂直APP中的佼佼者. 今天,我们有幸采访了美柚的VP黄益聪先生,听听他来分享下美柚如何基于业务以及又是如何货比三家来选择云服务商的故事. Q: 对于您自身的业务,有什么可以分享的吗? 美柚是在2013年4月创办的专注于服务女性用户的互联网企业,有着"让女人更美更健康"的理念,成功打造了工具+社区+电商的产业闭环,在女性垂直细分领域取得行业领先的地位.公司旗下的美柚APP是以经期记录为切入点的,逐渐垄断女性经期健康市场之后,又将用户市场布局从经期扩张到备孕.孕期和育儿阶段,

1、大型项目经验分享——业务需求篇

随着2018的临近,为期两年的大型平台项目终于看到曙光,趁着7天年假的休息调整时间,同大家分享下这段伴随着 信心与激情.痛苦与绝望.压力与动力.成功与喜悦的刻骨铭心的过程. 这是一个由我们近三十人的项目组来主导,与六百余人配合.开发.联调.测试的大型金融平台项目. 小到开发细节,大到业务场景,青鸟会在各个系列专题中逐一叙述,本篇先来分享下业务需求的分析.制定.审核.确认.变更.维护的一系列过程. 1.需求 先说下需求,值得一提的是,需求一个特别有意思的东西.因为,很有可能你都不知道它是怎么来的?

业务需求、用户需求和功能需求

软件需求包括3个不同的层次――业务需求.用户需求和功能需求.除此之外,每个系统还有各种非功能需求. 业务需求(Business requirement)表示组织或客户高层次的目标. 业务需求通常来自项目投资人.购买产品的客户.实际用户的管理者.市场营销部门或产品策划部门.业务需求描述了组织为什么要开发一个系统,即组织希望达到 的目标.使用前景和范围(vision and scope)文档来记录业务需求,这份文档有时也被称作项目轮廓图或市场需求(project charter 或 market r

我为什么想做业务/需求分析师

我有幸在工作的头几年就开始关注牛人的项目管理是怎么做的,读的第一本项目管理书籍是<成为技术领导者>,作者站在一个技术牛人的角度上更关注人与人之间的协作.更有幸的是,我很快就有机会参与到一个北美的跨国合作项目里去,那时候正式敏捷刚刚起步的头几年.坊间有大量的文章在拿敏捷和传统的瀑布式项目管理流程做对比,其中最重要的对比就是需求分析.因为关键需求的遗漏.误解,各个合作方从未讨论过的潜在假设造成的项目失败屡见不鲜.程序员最痛恨的加班,尤其是无效的加班,也往往由需求变化,或者更准确的说是需求遗漏和误解

使用Selenium含蓄等待获取页面元素(附带实际业务需求情景)

Hello,大家好,又到了小猿分享技术的时间了.这回带来的是使用Selenium去网站上获取部分信息并且执行部分操作以及"含蓄"等待元素加载完成以及截取图片和网页刷新机制的技术点. 解释说明:Selenium用于自动化测试,web自动化测试工具集,即使用该模块去模拟手动去网页上点击获取信息,是一个很好的自动化测试模块. 关于selenium模块,其实它的主要目的是进行web自动化测试,获取信息是次要的,主要是为了测试web的性能,这里也只是针对关于在web页面上进行操作. 该模块适用范