[BASH命令]sort

sort命令对文件逐行进行排序,或者把多个排过序的文件归并成一个有序的文件。sort支持各种快排、堆排等多种排序算法;支持对把文件行切分成多个字段按指定KEY进行比较;支持各种比较方式(字典、数字、浮点、月份、版本……),支持利用多个CPU并行排序,支持对大文件采用mmap加速;支持临时文件和目录……功能非常强大。

我日常用到的参数如下:

  • -t char--field-separator=char
  • -k field1[,field2]--key=field1[,field2]
    • sort默认按照文件的每一行进行比较(整行作为比较的key),但是也可以通过-t参数将一行文字分隔为多个字段,然后用-k参数指定将哪个字段作为比较大小的key。
  • --debug
    • 输出调试信息,这是学习sort命令的最佳工具,打印每一步比较的key是什么,比较结果是什么。
  • -u--unique
    • 过滤掉重复的行(采用稳定排序算法)。如果和-c或者-C选项一起使用,检查有序的同时也检查是否有重复的行(更准确来说是key)。
  • -m--merge
    • 合并多个文件:要合并的文件应该保持有序。
  • -s
    • 稳定排序,KEY相同的时候保持原有的排列顺序。

      file.txt => 内容如下
      0 99
      2 12
      1 12
      9 11
      
      sort -k 2 -u -s file.txt =>输出如下
      9 11
      2 12
      0 99
      

      上面的排序命令:默认按照空格将每一行分为前后两个字段,以第二个字段作为排序的KEY。排序采用稳定算法,忽略掉KEY相同的行。

  • -c--check
  • -C--check=silent|quiet
    • 检查文件是否有序。如果文件是无序的,显示错误并返回错误码:-1,文件有序则返回:0。
    • -C--check=silent--check=quiet是“安静”模式,只返回值,无输出信息.
  • -b--ignore-leading-blanks
    • 忽略行首空白。
  • -f--ignore-case
    • 先转换为大写,然后比较,从而起到忽略大小写的作用。
  • -h--human-numeric-sort--sort=human-numeric
    • 用于存储容量的比较,如果内存和硬盘的大小往往用KMGT等单位:1M > 9K。算法先比较正负,然后比较单位的字母,最后才比较数字。
  • -M--month-sort--sort=month
    • 按照月份的缩写进行比较。
  • -R--random-sort--sort=random
    • 按KEY生成HASH值,然后按照HASH值进行排序,因此不同的KEY按照随机顺序排列。注意:KEY相同的会排在一起。
  • -r--reverse
    • 倒序排列。
  • -V--version-sort
    • 按版本号的规则进行比较:每一行看做:前缀+版本号+后缀。相关的正则式为:"(.([A-Za-z~][A-Za-z0-9~]*)?)*"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值