欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

记一次Linux下数据统计

程序员文章站 2022-07-10 23:23:03
需求: 服务端有应用访问日志,需要统计某一个API,访问top N的通道。 统计思路: 1、筛选/过滤待统计API; 2、分割,获取待统计具体字段; 3、计数; 4、按照计数结果降序排序; 5、截取top N. 最终命令如下: 各个命令详细用法见下文: awk awk是一种编程语言,用于Linux/ ......
  • 需求:
    服务端有应用访问日志,需要统计某一个API,访问top N的通道。
  • 统计思路:
    1、筛选/过滤待统计API;
    2、分割,获取待统计具体字段;
    3、计数;
    4、按照计数结果降序排序;
    5、截取top N.
  • 最终命令如下:

grep "API name" access.log | awk -F'{' '{print $4}' | awk -F',' '{print $5}' | sort -r | uniq -c | sort -rn | head N

各个命令详细用法见下文:

awk

awk是一种编程语言,用于Linux/unix下对文本和数据进行处理。awk非常强大,这里只列出这次使用到的皮毛。

  • 语法

awk [options] patern语句块

  • 常用选项
    • -Ffs,fs指定分隔符,可以是字符串或者正则表达式;
    • print $N,打印第N个字符。

sort

sort:将文件进行排序并且将排序结果标准输出

  • 语法

sort (选项) (参数)

  • 参数
    • 文件:指定待排序的文件列表
  • 选项
    • -r:以降序排序,默认是升序;
    • -n:依照数值的大小排序,默认是ASCII;
    • -t:指定排序时所用的栏位分隔字符;
      分隔字符>
    • -k:指定排序的栏位;
    • -u/uniq:忽略相同行;
    • -o:排序结果输出文件;

uniq

uniq:统计或者删除文件中的重复行,一般与sort命令结合使用

  • 语法

uniq (选项) (参数)

  • 参数
    • 输入文件,默认标准输入
    • 输出文件,默认标准输出
  • 选项
    • -c/--count:统计重复行数;
    • -d/--repreated:仅显示重复出现的行列;
    • -u/--unique:仅显示出现一次的列;
    • -f或--skip-fields=:忽略比较指定的栏位;
      栏位>栏位>
    • -s或--skip-chars=:忽略比较指定的字符;
      字符位置>字符位置>
    • -w或--check-chars=:指定要比较的字符。字符位置>字符位置>

head:默认显示文件开头10行。

  • 语法

head (选项) (参数)

  • 参数
    • 文件列表
  • 选项
    • -n:指定显示行数;
      数字>
    • -c:指定显示字符数;数字>