zoukankan      html  css  js  c++  java
  • Linux

    awk 线上处理常用模式

    awk 处理复杂日志

    6.19: 
    DHB_014_号百总机服务业务日报:广州 到达数异常!
    DHB_023_号百漏话提醒日报:珠海 到达数异常!
    6.20: 
    DHB_014_号百总机服务业务日报:广州 到达数异常!到
    
    awk -F '[_ :]+' 'NF>2{print $4,$1"_"$2,b |"sort";next}{b=$1}'         
    # 当前行NF小于等于2 只针对{print $4,$1"_"$2,b |"sort";next} 有效 即 6.19:行跳过此操作,  {b=$1} 仍然执行
    # 当前行NF大于2 执行到 next 强制跳过本行,即跳过后面的 {b=$1}
    广州 DHB_014 6.19

    一些线上分析处理

    分析图片服务日志,把日志(每个图片访问次数*图片大小的总和)排行,也就是计算每个url的总访问大小
    说明:本题生产环境应用:这个功能可以用于IDC网站流量带宽很高,然后通过分析服务器日志哪些元素占用流量过大,进而进行优化或裁剪该图片,压缩js等措施。
    本题需要输出三个指标: 【被访问次数】 【访问次数*单个被访问文件大小】 【文件名(带URL)】
    测试数据:

    192.168.1.101 - - [08/Dec/2017:15:43:56 +0800] "GET /static/images/photos/2.jpg HTTP/1.1" 200 11299 

    awk '{array_num[$7]++;array_size[$7]+=$10}END{for(i in array_num) {print array_num[i]" "array_size[i]" "i}}'

    一些网上练习题:

    已知:

    wang     4
    cui      3
    zhao     4
    liu      3
    liu      3
    chang    5
    li       2
    
    1 通过第一个域找出字符长度为4的
    2 当第二列值大于3时,创建空白文件,文件名为当前行第一个域$1 (touch $1)
    3 将文档中 liu 字符串替换为 hong
    4 求第二列的和
    5 求第二列的平均值
    6 求第二列中的最大值
    7 将第一列过滤重复后,列出每一项,每一项的出现次数,每一项的大小总和

    处理方式

    1、字符串长度
    awk 'length($1)=="4"{print $1}'
    2、执行系统命令
    awk '{if($2>3){system ("touch "$1)}}'
    3、gsub(/r/,"s",域) 在指定域(默认$0)中用s替代r  (sed 's///g')
     awk '{gsub(/liu/,"hong",$1);print $0}' a.txt
    4、列求和
     awk '{a+=$2}END{print a}'
    5、列求平均值
     awk '{a+=$2}END{print a/NR}'
     awk '{a+=$2;b++}END{print a,a/b}' 
    6、列求最大值
    awk 'BEGIN{a=0}{if($2>a) a=$2 }END{print a}'
    7、将第一列过滤重复列出每一项,每一项的出现次数,每一项的大小总和
    awk '{a[$1]++;b[$1]+=$2}END{for(i in a){print i,a[i],b[i]}}'
  • 相关阅读:
    Java搭建邮件服务器并发送Excel附件
    Java发送Http带HEADER参数
    MySql 技术内幕 (查询处理和子查询)
    《MySQL技术内幕:SQL编程》笔记
    MySql 技术内幕 (数据类型)
    替换Jar包里文件
    [Python数据分析]新股破板买入,赚钱几率如何?
    一些资料
    sqlval
    IBM CLI 和 ODBC
  • 原文地址:https://www.cnblogs.com/sharesdk/p/8696565.html
Copyright © 2011-2022 走看看