linux命令---sort
来源:互联网 发布:王者荣耀网络问卷调查 编辑:程序博客网 时间:2024/06/06 18:09
说明:基于前几篇文章在写选项的时候带上了长选项格式,排版比较混乱,从本篇文章开始将不再介绍长格式选项,想了解的请对照man自行对应。
概述
sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。sort命令既可以从特定的文件,也可以从stdin中获取输入。
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出
本文基于sort版本:GNU coreutils 8.4
语法
sort [OPTION]... [FILE]...sort [OPTION]... --files0-from=F
选项
JAN'<...<
DEC’的顺序比较,暗含-b;即将前面3个字母依照月份的缩写进行排序 -h 按自然语言进行比较如2k,1g -n 按照字符串的数值顺序比较,暗含-b -R 通过关键字随机hash排序 -r 颠倒比较的结果. -l 按照当前环境排序. -c 会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1 -C 会检查文件是否已排好序,如果乱序,不输出内容—第一次乱序的内容,仅返回1 -k POS1[,POS2] 从关键字POS1开始,到POS2结束. 字段数和字符偏移量都从1开始计数(与基于零的+POS格式作比较) -m 合并已经排序好的文件,不排序. -o FILE 将结果写入FILE而不是标准输出. -s 通过屏蔽最后的再分类比较来稳定排序. -t SEP 指定排序时所用的栏位分隔字符。使用SEP来替代空格的转换non-. -T DIRECTORY 使用DIRECTORY作为临时文件,而不是$TMPDIR或者/tmp -u 如果有-c,则按严格的顺序进行检查; 如果有-m,则只输出相等顺序的第一个. -z 以0字节结束行,而不是使用换行符,这是为了找到-print0 –help 显示帮助并退出. –version 输出版本信息并退出.POS为F[.C][OPTS],这里的F指的是字段数,而C为字段中的字符位置,这在-k中是从开始计数的,而在过时的格式中是从零开始的.OPTS可由一个或多个Mbdfinr组成;这有效地屏蔽了对于那个关键字的全局-Mbdfinr设置.如果没有指定关键字,则使用整行作为关键字.如果没有FILE,或者FILE是-,则从标准输入读取
实例
准备文本文件
[root@wmstianjin16172 ~]# cat testSort.txt name age dept markyl 30 1 000sl 25 2 130ag 35 5 134uq 26 3 141 uq 26 3 141ag 35 5 134uq 26 3 141Uq 24 3 141
1、不使用任何参数对文件按行进行ASCII码排序
[root@wmstianjin16172 ~]# sort testSort.txtag 35 5 134ag 35 5 134name age dept marksl 25 2 130Uq 24 3 141 uq 26 3 141uq 26 3 141uq 26 3 141yl 30 1 000
2、使用-k选项对第二列进行排序
[root@wmstianjin16172 ~]# sort -k2 testSort.txtUq 24 3 141sl 25 2 130 uq 26 3 141uq 26 3 141uq 26 3 141yl 30 1 000ag 35 5 134ag 35 5 134name age dept mark
3、使用-n选项,对数字进行排序
[root@wmstianjin16172 ~]# sort -nk2 testSort.txtname age dept markUq 24 3 141sl 25 2 130 uq 26 3 141uq 26 3 141uq 26 3 141yl 30 1 000ag 35 5 134ag 35 5 134
4、使用-r选项倒序排列
[root@wmstianjin16172 ~]# sort -rnk2 testSort.txt ag 35 5 134ag 35 5 134yl 30 1 000uq 26 3 141uq 26 3 141 uq 26 3 141sl 25 2 130name age dept mark
5、使用-u选项去重
[root@wmstianjin16172 ~]# sort -unk2 testSort.txtname age dept markUq 24 3 141sl 25 2 130uq 26 3 141yl 30 1 000ag 35 5 134
当然这里指的是第二列的值重复
6、使用-t选项
用字符’2’替换默认的分隔符TAB
[root@wmstianjin16172 ~]# sort -t2 -nk2 testSort.txtag 35 5 134ag 35 5 134name age dept markyl 30 1 000Uq 24 3 141sl 25 2 130 uq 26 3 141uq 26 3 141uq 26 3 141
7、混合选项-t指定分割符,对2,3字段域进行数字排列,对1字段域进行数值排列
[root@wmstianjin16172 ~]# sort -t"2" -nk2,3 -k1 testSort.txtag 35 5 134ag 35 5 134name age dept markyl 30 1 000Uq 24 3 141sl 25 2 130 uq 26 3 141uq 26 3 141uq 26 3 141
8、使用-o选项
[root@wmstianjin16172 ~]# sort -t, -nk1 testSort.txt -o sortRes.txt[root@wmstianjin16172 ~]# cat sortRes.txt ag 35 5 134ag 35 5 134name age dept marksl 25 2 130Uq 24 3 141 uq 26 3 141uq 26 3 141uq 26 3 141yl 30 1 000
9、使用-R选项
[root@wmstianjin16172 ~]# sort -R testSort.txt uq 26 3 141sl 25 2 130Uq 24 3 141name age dept markuq 26 3 141uq 26 3 141yl 30 1 000ag 35 5 134ag 35 5 134
每次都不一样,不知道它的用处是什么,打乱重新组织?
10、使用-c/-C选项
[root@wmstianjin16172 ~]# sort -C testSort.txt [root@wmstianjin16172 ~]# echo $?1[root@wmstianjin16172 ~]# sort -c testSort.txtsort: testSort.txt:3: disorder: sl 25 2 130[root@wmstianjin16172 ~]# echo $?1
11、-b、-f、-M等就不在此举例了
阅读全文
0 0
- linux中的sort命令
- 【linux命令】sort技巧
- linux sort 命令详解
- linux sort 命令详解
- Linux 中的 sort 命令
- [Linux] sort命令
- Linux sort 命令 使用
- Linux命令之sort
- linux sort 命令详解
- Linux sort命令详解
- linux sort 命令
- linux sort命令使用
- linux 命令之sort
- linux命令之sort
- linux sort 命令详解
- linux sort命令
- Linux sort命令解析
- linux sort命令
- delphi热键设定的方法
- <div><div>的结果
- N
- ubuntu文档保存出现的一些错误
- 不要重新定义继承而来的缺省参数值
- linux命令---sort
- hdu 1272 判断是否为一棵无向树
- android studio导入第三方库和demo
- spark或者mapreduce文档相似度计算
- Python使用数据库
- Sql Server 的crud(增删改查)以及一些简单的嵌套查询
- URAL 1553Caves and Tunnels(树链剖分-点更新-区间最值查)
- ios-NSTimer定时器
- HDU 5934 Bomb(强连通分量缩点)