公司业务需要,天天用awk统计数值然后排序,出问题了,如下:

count.sh 是一个统计脚本,把awk输出的值按占比、条数、类型 在重新输出

awk -F\| '{print $16}' *MQTT*  | ~/count.sh  | sort -nk3
  91.51% 345        0
  Total 377
  2.65% 10           1
  5.84% 22          2

0与1之间加了个total值,我想要的结果是total排在第一行,然后是的0、1、2,

后来找到的解决方法:

awk -F\| '{print $16}' *MQTT*  | ~/count.sh  | sort -nk3   -k2r
Total 377
 91.51% 345         0
    2.65% 10         1
   5.84% 22         2

在第三列按照从小到大排序后,再把第二例按照倒序排列就行了。

出现新的问题:

(1)有时候会出现按照第二例倒序排序失败。       (以前工作中遇见)

(2)有时候在添加第二列排序后,整个排序混轮。(以前工作中遇见)

在多实验了几次后,可以肯定是选项 -n 有问题,找了一个写博客时间久的,点击量还不错的,结果如下:

看红色框里内容,我看了好几个博客 ,都是这样解释的。然后我又查看我自学的网站:菜鸟教程上,也是这么解释的。但就是解释不通我上面的问题。我于是 sort --help,逐条看每个选项,读第二遍的时候,发现问题了:

-n 选项有数值改为了字符串 ;在 -r选项的旮旯里,还有一个-g选项。按理来说,这个仔细看的话也是很容易发现的,但是我以前的三方终端显示的是英文版,长长的一溜,就没有仔细看过,我记得第一才看时为了方便,专门去博客园,就我上面截图的那家仔细看了中文版的,悲催的发生了今天的事。然后我就把我的终端改为中文版的,细看sort详解才发现这个问题。

来看-g的结果:

awk -F\| '{print $16}' *MQTT*  | ~/count.sh  | sort -gk3
Total 377
 91.51% 345        0
  2.65% 10          1
  5.84% 22         2

完美。只能说,人家博客写得那个年代,确实是那样解释的,但是到了现在,sont命令有了更细的更新,而我还在用以前的方法来解决现在的问题,有时候就不行了。我们在相信前人的同时,更要自己动手来查找解决。

  像上面发生的问题,其实在很多时候,根本就不是问题,对于我来说,假如我不是要把结果复制下来,为了看起来更整齐一些,我根本就不会去仔细研究,发现-g 与-n区别,没有追求完美的心态,得过且过,有问题,不可怕,可怕的是习惯的去遗忘。

  谨记,再小的问题,也会引起连锁反应引起大问题。

  

  

Linux sort -n 与 -g 排序对比的更多相关文章

  1. linux sort 多列正排序,倒排序

    转载:https://segmentfault.com/a/1190000005713784 sort是在Linux里非常常用的一个命令,管排序 sort将文件的每一行作为一个单位,相互比较,比较原则 ...

  2. linux sort按照指定列排序

    sort怎样按指定的列排序0000 27189 41925425065f 15 419254250663 7 419254250675 5 419254250691 76 419254250693 2 ...

  3. Linux sort 多字段分组排序

    常用参数: -t: 指定分隔符 -k: 指定域 -u: 去除重复行 -n: 以数值排序 -r: 降序排序 (sort默认的排序方式是升序) -o: 结果重定向输出到文件 1.源文件: # cat hh ...

  4. Linux多线程实践(7) --多线程排序对比

    屏障 int pthread_barrier_init(pthread_barrier_t *restrict barrier, const pthread_barrierattr_t *restri ...

  5. Sort 多列正排序,倒排序

    linux sort 多列正排序,倒排序 转自https://segmentfault.com/a/1190000005713784  发布于 2016-06-14  sort是在Linux里非常常用 ...

  6. Linux sort -g 的困惑

    sort命令是帮我们依据不同的数据类型进行排序,排序的效率很高,因此也是很常用的命令. sort参考及说明:https://www.gnu.org/software/coreutils/manual/ ...

  7. linux sort排序命令的高级用法(按多个列值进行排列)

    http://www.jquerycn.cn/a_9076 在linux中,使用sort按行进行排序是很简单的.不过有时,生活总是爱抛给你一个一个的问题.如果使用sort按多个列值排列,同时使用tab ...

  8. linux下sort命令使用详解---linux将文本文件内容加以排序命令

    转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...

  9. [转帖]linux Shell sort按照指定列排序

    linux Shell sort按照指定列排序 https://blog.csdn.net/weixin_38308151/article/details/80760133 kubectl get p ...

随机推荐

  1. Python-面向对象(一)-Day7

    Day7-面向对象基础 1一.isinstance(obj, cls) 1二.issubclass(sub, super) 1三.异常处理 11.异常基础 12.异常种类 23.异常其他结构 54.主 ...

  2. 快速获取表单多条数据,使用ajax传递给后台

    当表单中有多条数据需要向后台传递时,一个一个的获取显然是不可取的办法,可以借助表单的serialize()方法获取. HTML: <form id="form"> &l ...

  3. GIT入门笔记(17)- 创建分支dev_lsq, 提交到代码

    git服务器上默认的已经有主干和test分支. 开发人员提交代码流程如下: 1.用switch to->new branch创建dev1分支 2.push branch提交到dev1分支 3.在 ...

  4. Spring Security 入门(1-8)缓存EhCache

  5. MSSQl 事务的使用

    事务具有以下四个特性: 1.原子性 事务的原子性是指事务中包含的所有操作要么全做,要么全不做. 2.一致性 在事务开始以前,数据库处于一致性的状态,事务结束后,数据库也必须处于一致性状态. 3.隔离性 ...

  6. JSON的简单书写(初学),使用Java语言反序列化

    这个适合初学者:刚刚我学习的 1.基础的"JSON"     对象是用一对大括号: 例如: {      "name":"xiaohua", ...

  7. idea中,发现某个java语法在低版本中不支持时的解决办法

    比如,在某个工程中,准备用java.util.Objects#equals语法,发现提示版本不支持. F4查看Module的配置,发现原来是1.6版本. 当我手动修改为1.8时,提示我:Module是 ...

  8. python操作mongodb

    # python操作mongodb # 首先,引入第三方模块pymongo,该模块是python用来操作mongodb的 import pymongo # 第二步,设置ip地址,以及表格名称,表格名字 ...

  9. Text-文本撤销

    #撤销操作 from tkinter import * master = Tk() #打开undo按钮 text=Text(master,width=30,height=5,undo=True) te ...

  10. .NET MD5 加密

    using System; using System.Security.Cryptography; using System.Text; namespace Md5Demo { /// <sum ...