语法格式sort [ -A ] [ -b ] [ -c ] [ -d ] [ -f ] [ -i ] [ -m] [ -n ] [ -r ] [ -u ] [ -o OutFile ]
[ -t Character ] [ -T Directory ] [ -y [ Kilobytes ] ] [ -z RecordSize ] [ [ + [ FSkip ] 
[ .CSkip ] [ b ] [ d ] [ f ] [ i ] [ n ] [ r ] ] [ - [ FSkip ] [ .CSkip ] [ b ] [ d ] [ f ]
[ i ] [ n ] [ r ] ] ] [ -k KeyDefinition ] [文件 ]

使用说明sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定多个文件,
那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。-(减号)代替文件名指定标准输入。
如果您不指定任何文件名,那么该命令对标准输入排序。可以使用 -o 标志指定输出文件。
如果不指定任何标志,sort 命令基于当前语言环境的整理顺序对输入文件的所有行排序。

主要参数-A 使用 ASCII 整理顺序代替当前语言环境的整理顺序在逐字节的基础上排序。 
-b 忽略前导空格和制表符,找出字段的第一或最后列。 
-c 检查输入是否已按照标志中指定的排序规则进行排序。如果输入文件排序不正确,就返回一个非零值。 
-d 使用字典顺序排序。比较中仅考虑字母、数字和空格。 
-f 比较前将所有小写字母改成大写字母。 
-i 比较中忽略所有非显示字符。 
-k KeyDefinition 指定排序关键字。KeyDefinition 选项的格式为: 
[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
排序关键字包括所有以 FStart 变量指定的字段和 CStart 变量指定的列开头的字符及以 FEnd 变量指定的字段和 
CEnd 变量指定的列结束的字符。Modifier 变量的值可以是 b、d、f、i、n 或 r。修饰符与同一字母的标志等价。
-m 只合并多个输入文件;假设输入文件已经排序。 
-n 按算术值对数字字段排序。数字字段可包含前导空格、可选减号、十进制数字、千分位分隔符和可选基数符。
对包含任何非数字字符的字段进行数字排序会出现无法预知的结果。 
-o OutFile 将输出指向 OutFile 参数指定的文件,而不是标准输出。OutFile 参数值可以与 File 参数值相同。 
-r 颠倒指定排序的顺序。 
-t Character 指定 Character 为单一的字段分隔符。 
-u 禁止按照排序关键字和选项的所有等同排序(每一组行中一行除外)。 
-T Directory 将创建的所有临时文件放入 Directory 参数指定的目录中。 
-y[Kilobytes] 用 Kilobytes 参数指定的主存储的千字节数启动 sort 命令,并根据需要增加存储量。
(如果  Kilobytes 参数指定的值小于最小存储站点或大于最大存储站点,就以这个最小存储站点或最大存储站点取代)。
如果省略 -y 标志,sort 命令以缺省的存储大小启动。
-y0 标志用最小存储启动,而 -y 标志(不带 Kilobytes 值)用最大存储启动。sort 命令使用的存储量显著地影响性能。
以大存储量对小文件排序将很浪费。 
-z RecordSize 如果正在排序的任一行大于缺省的缓冲区大小,要防止出现异常终止。
指定 -c 或 -m 标志时,省略排序阶段,使用系统的缺省缓冲大小。如果已排序行超出这一大小,排序异常终止。
-z 选项指定排序阶段最长行的记录,因而可在合并阶段分配足够的缓冲区。
RecordSize 必须指明等于或大于要合并的最长行的字节值。

应用实例

  • 要在 LC_ALL、LC_COLLATE 或 LANG 环境变量设置为 En_US 的情况下排序 fruits 文件,请输入:

LANG=En_US sort fruits
此命令序列显示以升序词典顺序排序的 fruits 文件的内容。每一列的字符,包括空格、数字和特殊字符都经一一比较。 
例如,如果 fruits 文件包含文本:
banana
orange
Persimmon
apple
%%banana
apple
ORANGE
sort 命令显示:
%%banana
ORANGE
Persimmon
apple
apple
banana
orange
在 ASCII 整理序列中,%(百分号)在大写字母前,大写字母在小写字母前。
如果您当前的语言环境指定 ASCII 之外的字符集,结果可能不同。

  • 要以字典顺序排序,请输入:

sort  -d fruits
此命令序列排序和显示 fruits 文件的内容,并且只比较字母、数字和空格。
如果 fruits 文件与示例 1 相同,那么 sort 命令显示: 
ORANGE
Persimmon
apple
apple
%%banana
banana
orange
-d 标志忽略 %(百分号)字符,因为它不是个字母、数字或空格。(即 %%banana 被 banana 取代)。

  • 要将包含大写字母和具有类似小写行的特殊字符行分组,请输入:

sort -d -f fruits
-d 标志忽略特殊字符,-f 标志忽略大小写差异。
将 LC_ALL、LC_COLLATE 或 LANG 环境变量设置为 C 的情况下,fruits 文件的输出结果变为: 
apple
apple
%%banana
banana
ORANGE
orange
Persimmon

  • 要除去重复行排序,请输入:

sort  -d  -f  -u fruits
-u 标志告诉 sort 命令除去重复的行,使文件中的每一行唯一。此命令序列显示: 
apple
%%banana
ORANGE
Persimmon
不仅除去重复的 apple,而且也除去了 banana 和 ORANGE。
除去这些是因为 -d 标志忽略 %% 这个特殊字符,-f 标志忽略大小写差异。

  • 要如上面那样排序,除去重复的实例(除非是大写字母或标点不同),请输入:

sort  -u +0  -d -f +0 fruits
输入 +0 -d -f 完成的排序与示例 3 中 -d -f 的排序类型相同,+0 进行另一项比较以区分不一样的行。
这防止 -u 标志将它们除去。 
示例 1 所示的 fruits 文件中,添加的 +0 将 %%banana 与 banana 及 ORANGE 与 orange 区分开来。
然而,apple 的两个实例是相同的,所以其中之一被删除。
apple
%%banana
banana
ORANGE
orange
Persimmon

  • 要指定分隔字段的字符,请输入:

sort  -t: +1 vegetables
此命令序列排序 vegetables 文件,对每一行上第一个冒号后的文本进行比较。
+1 告诉 sort 命令忽略第一字段,从第二字段的开始到该行的结束进行比较。-t: 标志告诉 sort 命令冒号分隔字段。
如果 vegetables 包含: 
yams:104
turnips:8
potatoes:15
carrots:104
green beans:32
radishes:5
lettuce:15
那么,将 LC_ALL、LC_COLLATE 或 LANG 环境变量设置为 C 的情况下,sort 命令将显示:
carrots:104
yams:104
lettuce:15
potatoes:15
green beans:32
radishes:5
turnips:8
注意数字没有按照数字排序。当用字典式分类从左至右比较每一个字符时出现这种情况。
换句话说,3 在 5 之前,所以 32 在 5 之前。

  • 要排序数字,请输入:

sort  -t: +1  -n vegetables
此命令序列按照第二个字段对 vegetables 文件进行数字排序。
如果 vegetables 文件与示例 6 中的相同,那么  sort 命令将显示: 
radishes:5
turnips:8
lettuce:15
potatoes:15
green beans:32
carrots:104
yams:104

  • 要对多个字段排序,请输入:

sort  -t: +1 -2  -n +0 -1  -r vegetables
或 
sort  -t:  -k2,2 n -k1,1 r vegetables
此命令序列对第二字段(+1 -2 -n)进行数字排序。在这个顺序中,它以逆字母顺序(+0 -1 -r)对第一字段排序。
将 LC_ALL、LC_COLLATE 或 LANG 环境变量设置为 C 的情况下,输出将类似于: 
radishes:5
turnips:8
potatoes:15
lettuce:15
green beans:32
yams:104
carrots:104
此命令按数字顺序对行排序。当两行数字相同时,它们以逆字母顺序出现。

  • 要使用排序的文本替换原始文件,请输入:

sort  -o vegetables vegetables
此命令序列将排序输出存入 vegetables 文件( -o vegetables)。

Linux排序命令sort详解的更多相关文章

  1. linux nc命令使用详解(转)

    linux nc命令使用详解 功能说明:功能强大的网络工具 语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o& ...

  2. (转)Linux curl命令参数详解

    Linux curl命令参数详解 命令:curl在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具, ...

  3. (转)linux paste命令用法详解

    linux paste命令用法详解原文:http://www.xfcodes.com/linuxcmd/mulu/10211.htmlinux下paste命令,可用于合并文件的列. 功能说明:合并文件 ...

  4. (转)linux nc命令使用详解

    linux nc命令使用详解 原文:https://www.2cto.com/os/201306/220971.html 功能说明:功能强大的网络工具 语 法:nc [-hlnruz][-g<网 ...

  5. Linux帮助命令man详解

    命令man详解 命令man,可以获得命令(使用whatis命令可以得到一个命令的简短介绍,可以使用:命令 --help 来获得命令的选项说明)或配置文件的帮助信息(可以使用apropos命令仅查看配置 ...

  6. linux dd命令实用详解

    linux dd命令刻录启动U盘详解 dd命令做usb启动盘十分方便,只须:sudo dd if=xxx.iso of=/dev/sdb bs=1M 用以上命令前必须卸载u盘,sdb是你的u盘,bs= ...

  7. Linux排序命令sort(转)

    Linux sort命令用于将文本文件内容加以排序.sort可针对文本文件的内容,以行为单位来排序. 语法 sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符&g ...

  8. Linux常用命令与详解

    在Linux系统中文件删除.创建.更改等操作都是通过一个个不同的命令来完成我们想要的操作,那么什么是命令呢? 凡是在字符操作界面中输入的能够完成特定操作和任务的字符串都可以称为命令.严格来说,命令通常 ...

  9. linux ll 命令参数详解

    linux ll和Linuxls 的区别 可看 http://www.cnblogs.com/jxhd1/p/6548449.html 用法:ls [选项]... [文件]... 列出 FILE 的信 ...

随机推荐

  1. android surfaceView 的简单使用 画图,拖动效果

    前面说到了画图,其实更好的就是使用 surfaceView了. surfaceView 继承于 View,View里面嵌套了一个专门用于画图的 surface, 对于一个View的onDraw()方法 ...

  2. 微信小程序 weui 使用方法

      https://github.com/Tencent/weui-wxss/ 下载地址用于小程序的https://github.com/Tencent/weui   下载地址用于H5    运用示例 ...

  3. 快学Scala习题解答—第四章 映射和元组

    4 映射和元组  4.1 设置一个映射,当中包括你想要的一些装备,以及它们的价格.然后构建还有一个映射.採用同一组键,可是价格上打9折 映射的简单操作  ,"gun"->18 ...

  4. Atitit mybatis 3 3.2 3.3  3.4 新特性attilax总结

    Atitit mybatis 3 3.2 3.3  3.4 新特性attilax总结 1.1. iBATIS 3 内的新特性.html1 1.2. MyBatis团队于2013年2月21日正式发布 M ...

  5. DDR3控制

    很简单的,app_en和app_rdy一握手,代表MIG接受了一个写数据请求或者读数据请求,只要保证app_en和app_rdy握手,根本就不关心写数据rdy,这是MIG的一个bug,你看它源码就知道 ...

  6. [svc]ssh+gg二步认证

    1,安装依赖 yum install python-pip -y pip install docutils yum install gcc python-devel subversion pam pa ...

  7. k8s相关文档

    kube-dns组件架构区别看这个就够了 http://cizixs.com/2017/04/11/kubernetes-intro-kube-dns kubed-dns设置细节看这个就够了 http ...

  8. schema的作用

    1,如果schema中定义的字段类型和数据库中该字段存储值的类型不一致(可以不定义,但定义的时候类型必须一致),则该字段查找不到,mongoose不会返回该字段的数据 2,如果数据库中有字段a,而sc ...

  9. C/C++中的volatile关键字

    volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据. 如果没有volatile关键字,则编译器可能优化读取和存 ...

  10. 构造函数 (C++)

    构造函数是一种可初始化其类的实例的成员函数. 构造函数具有与类相同的名称,没有返回值. 构造函数可以具有任意数量的参数,类可以具有任意数量的重载构造函数. 构造函数可以具有任何可访问性(公共.受保护或 ...