线上直播环境中需要从nginx访问日志中分析每个client在一个小时内的访问情况,需要使用sort对多重字段进行排序。

sort基础知识回顾

下面是需要用到的sort的知识点:

sort语法
[root@www ~]# sort [-fbMnrtuk] [file or stdin]
选项与参数:
-f :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :使用『纯数字』进行排序(默认是以文字型态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符,默认是用 [tab] 键来分隔;
-k :以那个区间 (field) 来进行排序的意思(其中,用来指明选定域的结束位置,默认到行尾)

其中我们需要知道-k这个选项。

我们先看一个简单的例子:

对使用冒号分隔的第三项(到末尾)进行排序(department_id),并去掉重复项

$ sort -t: -u -k 3 names.txt 
Emma Thomas:100:Marketing 
Madison Randy:300:Product Development 
Alex Jason:200:Sales 
Sanjay Gupta:400:Support

如果要对/etc/passwd,先以第六个域的第2个字符到第4个字符进行正向排序,再基于第一个域进行反向排序。
cat /etc/passwd | sort -t':' -k 6.2,6.4 -k 1r 
sync:x:4:65534:sync:/bin:/bin/sync
proxy:x:13:13:proxy:/bin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh

下面对指定字段的多重排序问题再做强调:

sort sort_demo.txt -k1,1 -k2n,2

这里先按第2列排序,再按照第1列排序。注意, 这里按第一列排序应该写成-k1,1而不能是-k1
业务日志分析

下面是分析日志,检查那些response body响应时间过长的日志,排查client端网络较慢的原因:
zcat /usr/local/cloud/access_201609190000.tar.gz | grep -a "mltag=6003" | awk '$9>100000&&$10!=0&&$9/$10<400000{print $3,$2,$8,$9,$10,$9/$10,$(NF-6),$(NF-5),$(NF-4),$(NF-2),$(NF-1),$NF}' | column -t | sort -k2,2 -k1,1
表示先以第二列排序后,再按照第一列排序

通过上面的多重排序输出,我们可以很清楚地分析某个client ip在一小时内所有请求的响应时间,如果都比较长,说明该client所在的网络环境不太好。

利用sort对多字段排序相关推荐

  1. linux sort 时间排序,linux sort多字段排序实例解析

    本文研究的主要是linux sort多字段排序,具体介绍如下. Linux多数发行版自带的sort程序,非常强大,在此只说多字段排序 sort 有个参数-k,可以指定字段,有比较复杂的语法,不在文本范 ...

  2. C++:利用sort()对vector中的数据自定义排序

    //假如一个文件对应一个坐标,想对文件按照坐标的x或y轴进行排序 //先把这个结构体放进vector中,利用sort()排序struct PathIndexPair {Point2i point; / ...

  3. 【C#】C# List Sort 按照字母排序 多字段排序

    新建Person进行测试 public class Person {public int ID { get; set; }public string Name { get; set; } } 创建li ...

  4. mysql key value 排序_MySQL利用索引优化ORDER BY排序语句的方法

    创建表&创建索引 create table tbl1 ( id int unique, sname varchar(50), index tbl1_index_sname(sname desc ...

  5. 全字段排序 VS rowid 排序

    CREATE TABLE `t` (`id` int(11) NOT NULL,`city` int(11) NOT NULL,`name` varchar(16) NOT NULL,`age` in ...

  6. MyBatis Plus实现动态字段排序

    利用周末时间,对自己的项目进行了升级,原来使用的是tkmybatis,改为mybatis plus.但是返回数据的格式变了,导致前端页面自带的字段排序失效了,需要刷新表格才会排序,于是决定在服务端实现 ...

  7. linux sort 多列去重排序,【Linux】sort排序、uniq去重、wc统计

    文章目录 一.sort 排序 1.语法 2.参数说明 3.实例 二.uniq 去重 1.uniq使用 2.sort和uniq去重结果对比 三.wc 统计 一.sort 排序 sort命令用于 对文本文 ...

  8. vim 按照字段排序文件

    假设有如下数据,以空格为数据列分割: 1  何维川   124.63     172  0.72 2  张子寅   99.67      172  0.58 3  周广滨   93.34      1 ...

  9. 利用jQuery对无序列表排序 http://www.apkbus.com/android-80639-1-1.html

    利用jQuery对无序列表排序的原理是:获取到无序列表中的所有列表项,并转成数组形式,使用JavaScript函数对其进行排序后再次输出.其中使用到的jQuery函数有ready().get().te ...

最新文章

  1. python自动翻译小工具_Python实现翻译小工具
  2. 首届清华智班30人名单公布:贵校第一批AI本科生,状元金牌云集,与姚班“抢人”...
  3. 栈(Stack) 任何程序执行前,预先分配一固定长度的内存空间
  4. wine和steam的区别
  5. 爬取网易云音乐歌曲特色榜单信息
  6. 2-3:配置与环境之定制提示符
  7. Cisco ASR1002-X告警处理
  8. MySQL自定义查询字段排序
  9. Java中Double保留后小数位的几种方法
  10. URL编码(urlencoding)中关于空格的问题
  11. 为什么用户在注册时需要使用邮箱或手机号作为注册名?
  12. msfconsole 控制台简介
  13. echarts label固定位置_echarts 饼状图调节 label和labelLine的位置
  14. 腾讯历届笔试题(1)
  15. 面向对象分析与设计01 - 关键抽象
  16. EndnoteX9下载及教程
  17. 服务器e4系列,Intel Xeon E系列服务器处理器
  18. python实现数据可视化_使用Matplotib python实现数据可视化
  19. jquery实现省市区三级联动
  20. 3000字干货!如何做好一个BI项目的规划和需求定义?

热门文章

  1. NetCore学习实践1__项目创建和配置文件的获取
  2. [LeetCode] 130. Surrounded Regions Java
  3. ecshop微信扫描支付开发
  4. CS Tip 16: 利用注释
  5. OpenCV+python:人脸检测
  6. usaco Raucous Rockers(dp)
  7. html post 图片,如何发送图片作为多部分POST请求的一部分 - Java HtmlUnit
  8. 计算机的网络端口管理器,Win7设备管理器没有端口选项的三大原因及解决措施...
  9. android zxing作用,Android / ZXing不再有效
  10. c语言中求一个数的因数,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...