• sort 命令对文件多列详细排序


    • sort 命令 默认是打印出来,可以通过定向符>  或-o 指定输出文件
    • -t ' ' 指定分隔符为空格
    • -k 指定按分隔后的第几域排序
    • -n 按数值大小排序,默认是升序(从小到大)
    • -r 表示逆序 reverse
    1. sort -t ' ' -k 1 sort_test.file # 对第一域默认按ASCII码值排序 
    2.  sort -t ' ' -n -k 2 sort_test.file  # 对第二域按数值大小排序
    3. sort -t ' ' -n -k 2 -k 3 sort_test.file # 对第二域按数值排序,当第二域相同时按第三域排序 
    4. sort -t ' ' -n -k 3r -k 2 sort_test.file # 按第3域倒序,相同时按第二域升序排。 等同于 sort -t ' ' -k 3nr -k 2n sort_test.file

    解析 -k 格式。 

    [ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
    • Fstart 即开始的域 .CStart即在Fstart域内第几个字符 (F:Filed, C:Character) 。CStart缺省表示首字符开始
    • Modifier: 修饰符,如n,r等
    • FEnd 截止域,CEnd 截止域内的第几个字符。 FEnd缺省表示到行尾,CEnd表示这个域尾
    1. 例子:sort -t ' ' -k 1.2 sort_test.file 从第一个域的第二个字母(到结尾)排序
    2. sort -t ' ' -k 1.2,1.2 -k 3,3nr sort_test.file 。按照第一域的第二个字符排序,如果相同则按第三域的值排序  与sort -t ' ' -k 1.2,1.2 -k 3nr sort_test.file 意思相同 -k 3,3 与-k3 都表示完整的第三域

    3. 注意含义不同的:
      1. sort -t ' ' -k 1.2 -k 3,3nr sort_test.file  # 表示从第一域的第二字符一直到该域最后一个字符排序,如果还存在相等,再按第三域数值排序
      2. sort -t ' ' -k 1 -k 3,3nr sort_test.file #从第一域的第一个字符到该域最后一个字符排序,如果还存在相等项,按第三域数值排序

    备注: sort -n -k 2.2,3.1 -k 1,1r sort_test.file 。这里会比较第二域第二字符到结尾字符几位的数值排序,(0 00 00 10)然后比较第一域倒向排序

      这种 -k2.2,3.1  Fstart 与Fend跨域的是失效的,只会到前面域结束为止。

    本文来自博客园,作者:BioinformaticsMaster,转载请注明原文链接:https://www.cnblogs.com/koujiaodahan/p/15795325.html

  • 相关阅读:
    初涉数组
    声明
    简述java程序中的main方法
    概述java语言
    1.3 linux基础(三)
    linux基础之-screen命令
    1.2 linux基础(二)
    1.1 Linux基础(一)
    实验7-1-13 装箱问题
    实验7-1-12 组个最小数
  • 原文地址:https://www.cnblogs.com/koujiaodahan/p/15795325.html
Copyright © 2020-2023  润新知