http://www.jquerycn.cn/a_9076

在linux中,使用sort按行进行排序是很简单的。
不过有时,生活总是爱抛给你一个一个的问题。如果使用sort按多个列值排列,同时使用tab作为分隔符,而且对于某些列需要进行逆序排列,这样sort命令来实现就略显折腾。

来看具体的例子吧。
比如下面的文件内容,使用[TAB]进行分割:

Group-ID   Category-ID   Text        Frequency
----------------------------------------------
200        1000          oranges     10
200        900           bananas     5
200        1000          pears       8
200        1000          lemons      10
200        900           figs        4
190        700           grapes      17

下面使用这些列进行排序(列4在列3之前进行排序,而且列4是逆序排列)

* Group ID (integer)
* Category ID (integer)
* Frequency “sorted in reverse order” (integer)
* Text (alpha-numeric)

排序后的结果应该为:

Group-ID   Category-ID   Text        Frequency
----------------------------------------------
190        700           grapes      17
200        900           bananas     5
200        900           figs        4
200        1000          lemons      10
200        1000          oranges     10
200        1000          pears       8

可以直接使用sort命令,解决这个问题:

复制代码代码示例:
sort -t $'\t' -k 1n,1 -k 2n,2 -k4rn,4 -k3,3 <my-file>

解释如下:
-t $'\t':指定TAB为分隔符
-k 1, 1: 按照第一列的值进行排序,如果只有一个1的话,相当于告诉sort从第一列开始直接到行尾排列
n:代表是数字顺序,默认情况下市字典序,如10<2
r: reverse 逆序排列,默认情况下市正序排列

最终的linux命令如下:

复制代码代码示例:
sort -t $'\t' -k 1n,1 -k 2n,2 -k4rn,4 -k3,3 my-file

最新文章

  1. 烂泥:redis3.2.3安装与配置
  2. WIN32服务程序(一):创建服务
  3. 分布式架构 Hadoop 2.7.X 安装和配置
  4. Mysql子查询
  5. JavaScript基础---作用域,匿名函数和闭包
  6. 2.Abstract Factory 抽象工厂(创建型模式)之简单工厂
  7. [JS]getYear()和getFullYear()方法区别
  8. SQL基础篇---函数及其函数配套使用的关键字
  9. hdu 5253 连接的管道
  10. The method getContextPath() is undefined for the type ServletContext
  11. JAVA 环境变量
  12. 方法覆盖(override)”的要点
  13. weblogic上部署应用程序
  14. PCI、CPCI、CPCIE 区别、特点
  15. 我的jquery validate 笔记
  16. linux 显示当前所在文件位置 以及git 分支所在
  17. MySQL性能分析及explain的使用(转)
  18. Tesseract 引擎翻译
  19. Angular刷新浏览器 404 问题
  20. JSON序列——主从表查询

热门文章

  1. 2018-2019-2 网络对抗技术 20165304 Exp3 免杀原理与实践
  2. Java好的的工具类:JsonUtils
  3. jmeter+ant+jekins的持续集成自动化搭建-基于虚拟机的linux系统
  4. mysql 线程操作
  5. IBM MQ 使用指南
  6. ubuntu中文乱码解决
  7. Linux gzip命令
  8. 聊聊JMM
  9. white-space:pre-wrap和word-break:break-all;
  10. python 网络编程粘包解决方案2 + ftp上传 + socketserver