awk BEGIN、END 很明白也很明了

使用awk统计

在Linux下进行文本处理,没什么比sed/AWK更强大了。于是乎直接想到了用awk将报告中的”PASS”,”FAIL”数目统计一下即可。
代码示例如下:

1
2
3
4
5
PASS数目:
grep -o ".*tests executed in" reportName | awk 'BEGIN{sum=0}{if($1 ~ /PASS/)sum+=$2}END{print sum}'

FAIL数目:
grep -o ".*tests executed in" reportName | awk 'BEGIN{sum=0}{if($1 ~ /FAIL/)sum+=$2}END{print sum}'

首先从报告文件中,取出匹配的最终运行概述信息,然后再用awk统计对应的条目。
此处用到了awk的BEGIN和END,顺便记录一下BEGIN和END的用法。

BEGIN和END

BEGIN和END顾名思义,在awk中,BEGIN只在开始处理之前运行一次,END只在结束处理之后运行一次,其余正常的文本行处理过程不运行。
非常适合用在做一些前置操作时使用,通常求和类初始化值、设定分隔符等经常会用。

语法:

1
awk '[BEGIN]{..}{..}[END{..}]' file

 

形式均为’{}’样,其中BEGIN和END语句块均可省略。

examples:
以统计数字文本(文本内容每行均为数字)为例

1
2
3
4
5
6
7
8
9
//1. 求和
awk 'BEGIN{sum=0}{sum+=$1}END{print sum}' file

//2. 求均值
awk 'BEGIN{sum=0}{sum+=$1}END{print sum/NR}' file
NR为总记录数

//3. 求最大值
awk 'BEGIN{max=0}{if($1 > max)max = $1}END{print max}'

 

配合grep、正则表达式以及条件表达式等使用,效果更佳。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值