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
    
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容

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