测试开发进阶(四十二)
awk
文本处理工具,处理数据并生成结果报告
awk ‘BEGIN{}pattern{commands}END{}’ file
some command | awk ‘BEGIN{}pattern{commands}END{}’
BEGIN处理数据之前执行
pattern匹配模式
commands处理的命令
END处理数据之后执行
内置变量
$0
整行内容$1~$n
当前行的第1~n个字段NF
当前行字段数NR
当前行号,从1开始FS
输入字段分割符,默认为空格或tab键RS
输入行分割符,默认为回车符OFS
输入字段分割符,默认为空格ORS
输入行分割符,默认为回车符
输出以:
分割的最后一列内容
1 | awk 'BEGIN{FS=":"} {print $NF}' passwd |
输出以:
分割的games
开头的行到new
开头的行的最后一列内容
1 | awk 'BEGIN{FS=":"}/^games/,/^new/{print $NF}' passwd |
printf格式符
%s
字符串%d
十进制数字%f
浮点数+
右对齐-
左对齐
以%s\n
的格式输出
1 | awk 'BEGIN{FS=":"}/^games/,/^new/{printf "%s\n" , $1}' passwd |
1 | awk 'BEGIN{FS=":"}/^games/,/^new/{printf "%-20s\t%-20s\n" , $1,$NF}' passwd |
格式化输出以s开头的行好和第一列内容
1 | awk 'BEGIN{FS=":"}/^s/{printf "%d\t%-10s\n" , NR,$1}' passwd |
格式化输出第三例大于100的内容
1 | awk -F ":" '$3 > 100 {printf "%-10s\t%-10s\n",$1,$(NF-1)}' passwd |
添加头部和尾部
1 | awk -F ":" 'BEGIN{printf "%-10s\t%-10s\n","username","path"}$3 > 100 {COUNT++;printf "%-10s\t%-10s\n",$1,$(NF-1)}END{printf "%-10s\t%-10s\n","totally",COUNT}' passwd |
使用文件
1 | awk1.awk |
1 | awk -F ':' -f awk1.awk passwd |
日志分析
获取每个测试人员执行的用例数
1 | BEGIN{ |
1 | awk -f 1201.awk testcases.log |
统计每位测试人员执行用例成功和失败的总数
1 | BEGIN{ |
1 | awk -f 1201_2.awk testcases.log |
同时分别统计每位测试人员执行用例CRITICAL、ERROR日志等级数以及所有测试人员每项总数
1 | BEGIN{ |
使用shell脚本来实现,并显示菜单,选择不同的选项则打印不同的内容
1 | !/bin/bash |