Shell三剑客实践

将工作内容自动化是所有测试人员必备的技能。除了标准的自动化测试框架可以解决自动化测试的需求之外,在工作中,经常需要快速查看或者执行一些小的操作,Shell可以辅助工作1. 流程自动化 2. 数据处理。Shell三剑客+Shell基础知识,可以应用到性能测试领域,UI自动化测试领域,自动化打包等等都是一样的原理。

Shell三剑客:

  1. grep
  2. awk
  3. sed

1. Shell - grep

grep - 数据查找定位。

  • 语法:grep pattern file
  • grep -i pattern file :忽略大小写
  • grep -v pattern file :
  • grep -o pattern file :
  • grep -E pattern file :
  • grep -A -B -C pattern file :
  • grep pattern -r/-R dir/ :递归搜索

举例:

  1. grep -R spark ./*
    在有上百个sql文件的目录下,返回的是包含 spark 的sql文件名。

  2. grep 'main' *
    查找当前目录下的文件中是否包含“main”文本。

  3. cat ./overview.html |grep -A1 "passRate suite" |grep -v "passRate suite" |sed s/[[:space:]]//g'
    返回测试结果报告中passRate的百分比

  4. curl -s https://testerhome.com/ | grep href | grep -o "http[^\"']*" | while read line; do curl -s -I $line | grep 200 && echo 200 $line || echo ERR $line; done
    查找并返回某个网页内所有链接打开状态是不是200

2. Shell - awk

awk - 数据切片处理,数据统计。

  • awk理论上可以替代grep。
  • awk是Linux下的一个命令,同时也是一种语言解析引擎。
  • 语法:awk ‘parttern{action}’
  • 内置变量:
    • FS:字段分隔符
    • OFS:输出数据的字段分隔符
    • RS:记录分隔符
    • ORS:输出字段的行分隔符
    • NF:字段数
    • NR:记录数

举例:

  1. 报了多少次404: awk '$9 ~/404/' ./nginx.log | wc -l

  2. 多少个链接报了404: awk '$9 ~/404/' ./nginx.log | awk '{print$7}' | sed -E 's/[0-9]{3,}/_d_/g' |sort | uniq -c | sort -nr | wc -l
    找出log中的404的报错数据,统计共有多少404报错.

  3. awk '{print$1}' ./nginx.log | sort | uniq -c | sort -nr | head -1
    在log中找出访问量最高的ip 统计分析

  4. netstat -tnp | grep ':22' | awk '{print$5}'| awk -F: '{print$1}' | sort | uniq -c| sort -nr | wc -l
    统计有多少个独立ip正在访问22端口。
    注意:netstat命令在Mac和Linux上是含义不同的2个命令。

3. Shell - sed

sed - 数据修改

  • 语法:sed [addr]X[options]
  • -e :表达式
  1. sed -n '2p'
    打印第二行

  2. netstat -tnp | sed 1,2d | awk '{print$4}' | awk -F: '{print$1}' | sort | uniq -c| sort -nr
    sed 1,2d:删除前2行数据。

  3. awk ‘$9!~/200/{print $7}’ ./nginx.log | sed -E ’s/[0-9]{3,}/_d_/g’ | sort | uniq -c | sort -nr | head -5
    使用sed,替换url中动态参数的部分,精确统计非200的所有链接:

通常情况下,grep、awk、sed会混合使用,达到精确定位数据位置、统计数据、修改替换数据的目标。

再看一个使用top命令,分析性能数据的例子:
统计进程id是22056的cpu和mem数据,输出20次并计算平均值。

top -b -d 1 -n 20 -p 22056 | grep --line-buffered 22056 | awk 'BEGIN{OFS="\t";print "cpu", "mem", "avgc", "avgm"}{c+=$9; m+=$10;print $9, $10, c/NR, m/NR}END{print "===="}'

cpu mem avgc avgm
0.0 2.1 0 2.1
0.0 2.1 0 2.1
0.0 2.1 0 2.1
0.0 2.1 0 2.1
0.0 2.1 0 2.1
0.0 2.1 0 2.1
0.0 2.1 0 2.1

====

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值