zoukankan      html  css  js  c++  java
  • 第一个AWK程序的尝试

    为了统计API的访问,需要读取8个G的数据,所以学习了下文本处理神器,AWK。简单实例如下:

    # 以	分割的文本

    awk
    -F " " ' //获取小时的函数 function getHours(times){ split (times, t, ":"); return t[3]; }
    //awk 可分为三个部分:
    //中间部分 {} ,表示对每行的处理,
    //BEGIN 表示每行处理之前的预处理,
    //END 表示逐行处理之后的最终处理
    // 三个部门并不需要同时存在,但中间逐行处理肯定是需要的。
    BEGIN{ tilte_cnt
    = 0; } {
    // $1 表示,每行按照 分割后,获取的第一个字串
    h
    = int(getHours($1)); flag = 0; // 中间可以有for循环,数组等。
    // 二维数组可以用 a[xx,xx]表示,实现是通过建立xx,xx的哈希实现的,并不是真正的二维数组
    for(i = 0; i < title_cnt; i ++){ if (title[i] == $2){ tmp[h,i] += 1; flag = 1; break; } } if (0 == flag){ title[title_cnt] = $2; for (i = 0; i < 24; i++) { tmp[i,title_cnt] = 0; } tmp[h,title_cnt] = 1; ++title_cnt; } }END{ iter = 0; // 有很多类C函数
    printf(
    "%s,", "api");
    for (i = 0; i < 24;i++){ printf("%d,", i); } printf(" "); for (i = 0; i < title_cnt; i++){ printf("%s,", title[i]); for (j = 0; j < 24; j++){ printf("%d,", tmp[j,i]); } printf(" "); } } ' api_log.res > api.analysis
    # 重定向到api.analysis 中
  • 相关阅读:
    github访问慢
    vue的图片裁剪上传vue-cropper
    vue动态设置路由重定向
    vue移动端预览pdf
    Vue项目中给路由跳转加上进度条nprogress
    IDEA收藏夹迁移
    Go语言基础语法(一)
    Go语言开发环境安装
    Windows上实现iOS APP自动化测试:tidevice + WDA + facebook-wda / appium
    配置Linux主机名
  • 原文地址:https://www.cnblogs.com/-lee/p/4827094.html
Copyright © 2011-2022 走看看