测试开发进阶(四十二)
awk
文本处理工具,处理数据并生成结果报告
awk ‘BEGIN{}pattern{commands}END{}’ filesome 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 |