本文共 1291 字,大约阅读时间需要 4 分钟。
定位分析脚本
shell脚本实例,初级待优化。
#!/bin/bash#echo >tmp.txt #初始化tmp.txt文件,用作存取每天错误最多的5个省份dir=/wh_k/numecho "" | tee $dir/$j.txt #初始化各省份信息A=`cat /wh_k/Sfen.txt` #获取所有省份信息for i in $A #获取每天错误最多的省份do echo >/wh_k/num/$i.txt (echo -n "$i " && grep $i test.txt | awk '{print $1}' | awk '{sum+=$1}END{print sum}')>>tmp.txtdoneB=`sort -n -k2 tmp.txt | tail -n 5 | awk '{print$1}'`for j in $B #获取错误代码及省份代码 do code_group=`grep $j test.txt | awk '{print$2}'` provinces_group=`grep $j test.txt | awk '{print$3}'` codes=($code_group) provinces=($provinces_group) count=${#codes[@]} for ((i=0;i<$count;i++)) do echo "code: "${codes[$i]} && echo "provinces: "${provinces[$i]} grep -w "${codes[$i]}" /wh_k/20180604.log | grep -w "${provinces[$i]}">>/wh_k/num/${provinces[$i]}.txt done echo "----------" done
补充知识点
获取某一列中所有数的和
awk '{print $1}' | awk '{sum+=$1}END{print sum}'
第二列进行排序(默认升序,降序加r参数)
sort -n -k2sort -nr -k2
定义数组
code_group=`grep $j test.txt | awk '{print$2}'`codes=($code_group)
获取数组中元素的个数
count=${#codes[@]}
遍历数组中的元素
${codes[@]}
for循环
for ((i=0;i<$count;i++))
获取数组值,i表示位置
${codes[$i]}
精准匹配
grep -w
去#行显示
grep -V ^# (-V反选
匹配前后n行
grep -C n name /xx.log
转载于:https://blog.51cto.com/13689359/2124974