美文网首页
Linux命令日日说(二十八)-- sort

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

作者: spt_genius | 来源:发表于2020-04-12 11:57 被阅读0次

    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
      

    相关文章

      网友评论

          本文标题:Linux命令日日说(二十八)-- sort

          本文链接:https://www.haomeiwen.com/subject/ifvkmhtx.html