Linux命令日日说(二十八)-- sort

sort


语法

sort [options] file

很简单却是很难玩精的一条命令,设计之初可能就考虑了很多。


参数

  • -b | --ignore-leading-blanks

    在每行中查找排序键时忽略前导空格。默认情况下,空白是空格或制表符,但 LC_CTYPE 区域设置可以更改此值。注意:区域设置的排序规则可能会忽略空白,但如果没有此选项,空白对于在带有-k选项的键中指定的字符位置将非常重要。

  • -c | --check | --check=diagnose-firt

    检查给定文件是否已排序:如果未全部排序,则打印包含第一个无序行的诊断,并以1状态退出。否则,退出成功。最多只能给出一个输入文件。

  • -C | --check=quiet | --check=slient

    如果给定文件已排序,则成功退出,否则退出并返回状态1。最多只能给出一个输入文件。这就像-c,只是它不打印诊断。

  • -d | --dictinary-order

    按电话簿顺序排序:排序时忽略除字母、数字和空格以外的所有字符。默认情况下,字母和数字是 ASCII 的字母和数字,空白是空格或制表符,但是 LC_CTYPE 语言环境可以更改这一点。

  • -f | --ignore-case

    不区分大小写。在进行比较时,将小写字符折叠为等效的大写字符,以便bB排序为相等。LC_CTYPE 区域设置确定字符类型。当与--unique一起使用时,那些小写的等价行将被丢弃。(目前还没有办法扔掉大写的等价物。(任何——倒数只会影响最终结果,在扔掉之后。)

  • -g | --general-numeric-sort | --sort=general-numeric

    按数字排序,将每行的前缀转换为长双精度浮点数。不报告溢出、下溢或转换错误。使用以下排序序列:

    • 不以数字开头的行(都被认为是相等的)。
    • 以一致但与机器相关的顺序排列的NaNs(在IEEE浮点运算中为“非数字”值)。
    • 负无穷大。
    • 以升序数字顺序排列的有限数(其中-0和+0相等)
    • 正无穷大。

    只有在没有其他选项的情况下才使用此选项;它比--数字排序(-n)慢得多,并且在转换为浮点时可能丢失信息。

  • -h | --human-numeric-sort | --sort=human-numeric

    按数字顺序排序,首先按数字符号(负号、零号或正号)排序;然后按 SI (Systeme International国际单位制)后缀(空后缀或kK后缀或MGTPEZY后缀之一)排序;最后按数值排序。例如,1023M1G 之前排序,因为M(mega)在G(giga)之前作为 SI 后缀。

  • -i | --ignore-nonprinting

    忽略非打印字符。LC_CTYPE 区域设置确定字符类型。如果还提供了更强大的--dictionary order(-d)选项,则此选项无效。

  • -m | --merge

    通过将给定文件作为一个组进行排序来合并它们。每个输入文件必须始终单独分类。它总是以排序而不是合并的方式工作;提供合并是因为它在工作的情况下速度更快。

  • -M | --month-sort | --sort=month

    一个初始字符串,由任意数量的空格组成,后跟一个月名称缩写,转换为大写,并按 JAN < FEB < ... < DEC。无效名称低于有效名称。LC_TIME locale类别确定月份拼写。默认情况下,空白是空格或制表符,但 LC_CTYPE 区域设置可以更改此值。

  • -n | --numeric-sort | --sort=numeric

    按数字排序。数字从每一行开始,由可选空格、可选-符号和可能由数千个分隔符分隔的零个或多个数字组成,可选后跟小数点字符和零个或多个数字。空数字被视为0LC_NUMERIC 区域设置指定小数点字符和千位分隔符。默认情况下,空白是空格或制表符,但 LC_CTYPE 区域设置可以更改此值。比较准确;没有舍入误差。无法识别前导+或指数表示法。要以数字方式比较这些字符串,请使用--general-numeric-sort(-g)选项。

  • -r | --reverse

    反转比较结果,使键值越大的行在输出中出现得越早,而不是越晚。

  • -R | --random-sort | --sort=random

    通过对输入键进行哈希排序,然后对哈希值进行排序。随机选择散列函数,确保它没有冲突,以便不同的键具有不同的散列值。这类似于输入的随机排列,只是具有相同值的键排序在一起。如果指定了多个随机排序字段,则对所有字段使用相同的随机哈希函数。要对不同字段使用不同的随机哈希函数,可以多次调用sort。哈希函数的选择受--random-source选项的影响。

  • --sort=WORD

    排序命令,上面命令中--sort=的都是。多项选择,看你个人习惯。

  • -V | --version-sort

    按版本名称和编号排序。它的行为类似于标准排序,只是每一个十进制数字序列在数字上被视为一个索引/版本号。


Example

  • sort

    标准排序按照字幕顺序。

    root@5ca8dbe55d8d:/test# cat file1
    line1
    line2
    line3
    
    line4
    line5
    root@5ca8dbe55d8d:/test# cat file1 | sort
    
    line1
    line2
    line3
    line4
    line5
    
  • sort -k 6 -n

    显示系统进程,以常驻部分的大小(RSS字段)顺序列出。

    root@5ca8dbe55d8d:/test# ps aux | sort -k 6 -n
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root       444  0.0  0.0  18616   500 pts/0    R+   08:04   0:00 /bin/bash
    root       443  0.0  0.1  34404  2824 pts/0    R+   08:04   0:00 ps aux
    root         1  0.0  0.1  18616  3456 pts/0    Ss   04:59   0:00 /bin/bash
    
  • sort -n -r file1

    反转排序数字。

    root@e0d7f2da343a:/# sort -n -r file1
    6
    5
    4
    3
    2.
    1
    root@e0d7f2da343a:/# cat file1
    1
    2.
    3
    4
    5
    6
    root@e0d7f2da343a:/#
    
  • sort -t : -n -k 5b,5 -k 3,3 /etc/passwd

    对第五个字段上的密码文件进行排序,并忽略任何前导空格。对字段3中数字用户ID的字段5中的值相等的行进行排序。字段用“:”分隔。

    root@e0d7f2da343a:/# sort -t : -n -k 5b,5 -k 3,3 /etc/passwd
    _apt:x:100:65534::/nonexistent:/usr/sbin/nologin
    gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
    list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
    backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
    bin:x:2:2:bin:/bin:/usr/sbin/nologin
    daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
    games:x:5:60:games:/usr/games:/usr/sbin/nologin
    irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
    lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
    mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
    man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
    news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
    nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
    proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
    root:x:0:0:root:/root:/bin/bash
    sync:x:4:65534:sync:/bin:/bin/sync
    sys:x:3:3:sys:/dev:/usr/sbin/nologin
    uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
    www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 系统巡检脚本:Version 2016.08.09 ############################ 系统...
    NamasAmitabha阅读 5,190评论 0 0
  • sort命令 sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定...
    花丶小伟阅读 12,083评论 0 1
  • 本部分主要介绍:排序命令 sort 的使用方法以及几个实例 排序命令 sort 排序命令 sort 介绍格式 so...
    sshentree阅读 2,166评论 0 0
  • 基本命令-2 压缩和归档 打包: 即归档,类似于旅游之前收拾行李 压缩: 为了减少占用的磁盘空间,可以做备...
    崔千易阅读 4,525评论 0 0
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,948评论 0 5