Linux sort -n 与 -g 排序对比
公司业务需要,天天用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 排序对比的更多相关文章
- linux sort 多列正排序,倒排序
转载:https://segmentfault.com/a/1190000005713784 sort是在Linux里非常常用的一个命令,管排序 sort将文件的每一行作为一个单位,相互比较,比较原则 ...
- linux sort按照指定列排序
sort怎样按指定的列排序0000 27189 41925425065f 15 419254250663 7 419254250675 5 419254250691 76 419254250693 2 ...
- Linux sort 多字段分组排序
常用参数: -t: 指定分隔符 -k: 指定域 -u: 去除重复行 -n: 以数值排序 -r: 降序排序 (sort默认的排序方式是升序) -o: 结果重定向输出到文件 1.源文件: # cat hh ...
- Linux多线程实践(7) --多线程排序对比
屏障 int pthread_barrier_init(pthread_barrier_t *restrict barrier, const pthread_barrierattr_t *restri ...
- Sort 多列正排序,倒排序
linux sort 多列正排序,倒排序 转自https://segmentfault.com/a/1190000005713784 发布于 2016-06-14 sort是在Linux里非常常用 ...
- Linux sort -g 的困惑
sort命令是帮我们依据不同的数据类型进行排序,排序的效率很高,因此也是很常用的命令. sort参考及说明:https://www.gnu.org/software/coreutils/manual/ ...
- linux sort排序命令的高级用法(按多个列值进行排列)
http://www.jquerycn.cn/a_9076 在linux中,使用sort按行进行排序是很简单的.不过有时,生活总是爱抛给你一个一个的问题.如果使用sort按多个列值排列,同时使用tab ...
- linux下sort命令使用详解---linux将文本文件内容加以排序命令
转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...
- [转帖]linux Shell sort按照指定列排序
linux Shell sort按照指定列排序 https://blog.csdn.net/weixin_38308151/article/details/80760133 kubectl get p ...
随机推荐
- Centos7安装openvpn及客户端配置
1.openvpn介绍 VPN直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,使用OpenSSL加密库中的SSLv3/TLSv1协议函数库. 目前OpenVPN能在Sola ...
- First:安装配置JDK and 部署Tomcat
(一)准备 百度云地址(win,64Bit): 1.tomcat(7.0):链接:https://pan.baidu.com/s/1f60DOGO5Hnj9bq-987FNrw 密码:6q55 2.j ...
- maven常见问题处理(3-3)Gradle编译时下载依赖失败解决方法
Gradle编译时在本地仓库中如果没有发现依赖,就会从远程仓库中下载, 默认的远程仓库为 mavenCentral(),即 http://repo1.maven.org/maven2/往往访问速度特别 ...
- GIT入门笔记(20)- git 开发提交代码过程梳理
git开发提交流程新项目开发,可以直接往master上提交老项目维护,可以在分支上修改提交,多次add和commit之后,也可以用pull合并主干和本地master,解决冲突后再push 1.检出代码 ...
- iOS 封装.framework 以及使用
.framework是什么? .framework是什么? 这个问题相信做iOS的都知道答案. 在我们的日常开发中,经常会用到各种已经封装好的库,比如支付宝.微信SDK等等中的库,这些库可以给我们的开 ...
- 解析 Javascript - this
在函数中 this 到底取何值,是在函数真正被调用执行的时候确定下来的,函数定义的时候确定不了. 因为 this 的取值是执行上下文环境的一部分,每次调用函数,都会产生一个新的执行上下文环境.当你在 ...
- JQuery Layer的应用实例
参考以上链接:https://blog.csdn.net/zlj_blog/article/details/24994799 sql面试题:https://www.cnblogs.com/qixuej ...
- python 评论楼
评论楼 从数据库中取出本篇博客的所有评论使用python语句将评论整理成具有层级关系的列表 typename=request.POST.get('typename') comment_list = m ...
- Java:Java 中会存在内存泄漏吗
理论上Java因为有垃圾回收机制(GC)不会存在内存泄露问题(这也是Java被广泛使用于服务器端编程的一个重要原因):然而在实际开发中,可能会存在无用但可达的对象,这些对象不能被GC回收,因此也会导致 ...
- 【贪心】Codeforces 349B.Color the Fence题解
题目链接:http://codeforces.com/problemset/problem/349/B 题目大意 小明要从9个数字(1,2,--,9)去除一些数字拼接成一个数字,是的这个数字最大. 但 ...