Linux中sort命令怎么用(linux,sort,开发技术)

时间:2024-05-05 22:41:01 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

Linux常用命令sort命令将输入行按照键值字段与数据类型选项以及locale 排序。

Linux中sort命令怎么用

sort

对文本文件中所有行进行排序。

概要

sort[OPTION]...[FILE]...sort[OPTION]...--files0-from=F

主要用途

  • 将所有输入文件的内容排序后并输出。

  • 当没有文件或文件为-时,读取标准输入。

选项

排序选项:

-b,--ignore-leading-blanks忽略开头的空白。-d,--dictionary-order仅考虑空白、字母、数字。-f,--ignore-case将小写字母作为大写字母考虑。-g,--general-numeric-sort根据数字排序。-i,--ignore-nonprinting排除不可打印字符。-M,--month-sort按照非月份、一月、十二月的顺序排序。-h,--human-numeric-sort根据存储容量排序(注意使用大写字母,例如:2K1G)。-n,--numeric-sort根据数字排序。-R,--random-sort随机排序,但分组相同的行。--random-source=FILE从FILE中获取随机长度的字节。-r,--reverse将结果倒序排列。--sort=WORD根据WORD排序,其中:general-numeric等价于-g,human-numeric等价于-h,month等价于-M,numeric等价于-n,random等价于-R,version等价于-V。-V,--version-sort文本中(版本)数字的自然排序。

其他选项:

--batch-size=NMERGE一次合并最多NMERGE个输入;超过部分使用临时文件。-c,--check,--check=diagnose-first检查输入是否已排序,该操作不会执行排序。-C,--check=quiet,--check=silent类似于-c选项,但不输出第一个未排序的行。--compress-program=PROG使用PROG压缩临时文件;使用PROG-d解压缩。--debug注释用于排序的行,发送可疑用法的警报到stderr。--files0-from=F从文件F中读取以NUL结尾的所有文件名称;如果F是-,那么从标准输入中读取名字。-k,--key=KEYDEF通过一个key排序;KEYDEF给出位置和类型。-m,--merge合并已排序文件,之后不再排序。-o,--output=FILE将结果写入FILE而不是标准输出。-s,--stable通过禁用最后的比较来稳定排序。-S,--buffer-size=SIZE使用SIZE作为内存缓存大小。-t,--field-separator=SEP使用SEP作为列的分隔符。-T,--temporary-directory=DIR使用DIR作为临时目录,而不是$TMPDIR或/tmp;多次使用该选项指定多个临时目录。--parallel=N将并发运行的排序数更改为N。-u,--unique同时使用-c,严格检查排序;不同时使用-c,输出排序后去重的结果。-z,--zero-terminated设置行终止符为NUL(空),而不是换行符。--help显示帮助信息并退出。--version显示版本信息并退出。KEYDEF的格式为:F[.C][OPTS][,F[.C][OPTS]],表示开始到结束的位置。F表示列的编号C表示OPTS为[bdfgiMhnRrV]中的一到多个字符,用于覆盖当前排序选项。使用--debug选项可诊断出错误的用法。SIZE可以有以下的乘法后缀:%内存的1%;b1;K1024(默认);剩余的M,G,T,P,E,Z,Y可以类推出来。

参数

FILE(可选):要处理的文件,可以为任意数量。

返回值

返回0表示成功,返回非0值表示失败。

例子

sort将文件/文本的每一行作为一个单位相互比较,比较原则是从首字符向后依次按ASCII码值进行比较,最后将他们按升序输出。

root@[mailtext]#catsort.txtaaa:10:1.1ccc:30:3.3ddd:40:4.4bbb:20:2.2eee:50:5.5eee:50:5.5[root@mailtext]#sortsort.txtaaa:10:1.1bbb:20:2.2ccc:30:3.3ddd:40:4.4eee:50:5.5eee:50:5.5

忽略相同行使用-u选项或者uniq

[root@mailtext]#catsort.txtaaa:10:1.1ccc:30:3.3ddd:40:4.4bbb:20:2.2eee:50:5.5eee:50:5.5[root@mailtext]#sort-usort.txtaaa:10:1.1bbb:20:2.2ccc:30:3.3ddd:40:4.4eee:50:5.5[root@mailtext]#uniqsort.txtaaa:10:1.1ccc:30:3.3ddd:40:4.4bbb:20:2.2eee:50:5.5

sort-n、-r、-k、-t选项的使用:

[root@mailtext]#catsort.txtAAA:BB:CCaaa:30:1.6ccc:50:3.3ddd:20:4.2bbb:10:2.5eee:40:5.4eee:60:5.1#将BB列按照数字从小到大顺序排列:[root@mailtext]#sort-nk2-t:sort.txtAAA:BB:CCbbb:10:2.5ddd:20:4.2aaa:30:1.6eee:40:5.4ccc:50:3.3eee:60:5.1#将CC列数字从大到小顺序排列:#-n是按照数字大小排序,-r是以相反顺序,-k是指定需要排序的栏位,-t指定栏位分隔符为冒号[root@mailtext]#sort-nrk3-t:sort.txteee:40:5.4eee:60:5.1ddd:20:4.2ccc:50:3.3bbb:10:2.5aaa:30:1.6AAA:BB:CC

关于-k选项的解读和例子:

-k选项深度解读:

FStart.CStartModifier,FEnd.CEndModifier-------Start--------,-------End--------FStart.CStart选项,FEnd.CEnd选项

这个语法格式可以被其中的逗号,分为两大部分,Start 部分和 End 部分。 Start部分由三部分组成,其中的Modifier部分就是我们之前说过的选项部分; 我们重点说说Start部分的FStartC.StartC.Start是可以省略的,省略的话就表示从本域的开头部分开始。FStart.CStart,其中FStart就是表示使用的域,而CStart则表示在FStart域中从第几个字符开始算排序首字符。 同理,在End部分中,你可以设定FEnd.CEnd,如果你省略.CEnd或将它设定为0,则表示结尾到本域的最后一个字符。

例子:从公司英文名称的第二个字母开始排序:

$sort-t''-k1.2facebook.txtbaidu1005000sohu1004500google1105000guge503000

解读:使用了-k 1.2,表示对第一个域的第二个字符开始到本域的最后一个字符为止的字符串进行排序。你会发现baidu因为第二个字母是a而名列榜首。sohu和google第二个字符都是o,但sohu的h在google的o前面,所以两者分别排在第二和第三。guge只能屈居第四了。

例子:只针对公司英文名称的第二个字母进行排序,如果相同的按照员工工资进行降序排序:

$sort-t''-k1.2,1.2-nrk3,3facebook.txtbaidu1005000google1105000sohu1004500guge503000

解读:由于只对第二个字母进行排序,所以我们使用了-k 1.2,1.2的表示方式,表示我们只对第二个字母进行排序(如果你问我使用-k 1.2怎么不行?当然不行,因为你省略了End部分,这就意味着你将对从第二个字母起到本域最后一个字符为止的字符串进行排序)。 对员工工资进行排序,我们也使用了-k 3,3,这是最准确的表述,表示我们只对本域进行排序,因为如果你省略了后面的3,就变成了我们对第3个域开始到最后一个域位置的内容进行排序了。

注意

  1. 关于-g和-n选项的区别:stackoverflow

  2. 关于这个复杂命令的学习,建议您阅读info文档及参考博客、问答网站等。

  3. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 shufinfo coreutils 'shuf invocation'

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Linux中sort命令怎么用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Linux中slocate命令怎么用下一篇:

16 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18