内容大纲
需求一: 统计日志中账号对应的错误码数
问题描述:
解决思路:
先用awk将‘appName=账号‘以及‘ret=error:错误码’筛选出来
随后用sort排序,uniq -c去重并统计重复数
解决过程:
日志格式举例
cat a.txt | grep 'error:'| grep 'appName=' |
awk '{for(i=1;i<=NF;i++){if($i~/^ret=error.*/ || $i~/^appName=.*/){printf $i" "}};if(i=NF){printf "\n"}}' |sort|uniq -c
awk也可以拆解成以下形式,便于理解,也可正常执行
cat a.txt | grep 'error:'| grep 'appName=' |
awk '
{
for(i=1;i<=NF;i++)
if($i~/^ret=error.*/ || $i~/^appName=.*/)
printf $i" "
if(i=NF)
printf "\n"
}' |sort|uniq -c
命令解释
执行结果(敏感信息已打码)
上图结果虽然统计成功,但是未能排序,接着优化
| sort -t ' ' -k 1 -n
# 将结果1通过管道传输给上述命令,
sort -t ‘ ’ 指定按空格分割,
-k 1 指定以第1个字段进行排序
-n 指定使用数值从小到大排序
至此,需求实现