sort命令使用详解[本人亲测整理]
2011-07-21 13:32
399 查看
sort命令总结
功能:排序
语法:sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
参数:
-b 忽略每行前面开始出的空格字符。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-c 检查文件是否已经按照顺序排序。
-m 将几个排序好的文件进行合并。
-M 前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
-k 指定域
--help 显示帮助。
--version 显示版本信息。
--------------------------------------------------------------------------------------------------[root@Jesse ~]# cat c.txt
7 July
8 August
9 September
10 October
11 November
12 December
1 January
2 February
3 March
4 April
5 May
6 June
[root@Jesse ~]# sort -c c.txt
sort: c.txt:4: disorder: 10 October //说明未按照某种顺序进行排列,如果什么也不显示,则说明已按某种顺序分类。
--------------------------------------------------------------------------------------------------[root@Jesse ~]# cat a.txt
google 110 5000
baidue 100 5010
gugeee 120 3000
sohuee 100 4500
[root@Jesse ~]# cat b.txt
3 ladygaga 1
5 ladygaga 9
0 ladygaga 5
9 ladygaga 4
6 ladygaga 2
8 ladygaga 3
7 ladygaga 0
1 ladygaga 6
4 ladygaga 7
2 ladygaga 8
[root@Jesse ~]# sort -m a.txt c.txt //将两个文件内容整合到一起
7 July
8 August
9 September
10 October
11 November
12 December
1 January
2 February
3 March
4 April
5 May
6 June
google 110 5000
baidue 100 5010
gugeee 120 3000
sohuee 100 4500
--------------------------------------------------------------------------------------------------进行月份排序
[root@Jesse ~]# cat c.txt
July
August
September
October
November
December
January
February
March
April
May
June
[root@Jesse ~]# sort -M c.txt
January
February
March
April
May
June
July
August
September
October
November
December
--------------------------------------------------------------------------------------------------[root@Jesse ~]# sort -M c.txt -o d.txt //将内容排序后导入到d.txt这个文件。
--------------------------------------------------------------------------------------------------[root@Jesse ~]# cat e.txt
1
2
3
4
5
6
7
8
[root@Jesse ~]# sort -r e.txt //逆序进行排列
8
7
6
5
4
3
2
1
--------------------------------------------------------------------------------------------------[root@Jesse ~]# cat a.txt
google 110 5000
baidue 100 5010
gugeee 120 3000
sohuee 100 4500
[root@Jesse ~]# sort -t" " -k 3 a.txt //出现空格的地方作为第一域进行分类
gugeee 120 3000
sohuee 100 4500
google 110 5000
baidue 100 5010
########################################################################有关-k 的实例演示
########################################################################准备工作:
[root@Jesse ~]# cat a.txt
google 110 5000
baidue 100 5000
gugeee 120 3000
sohuee 101 4500
------------------------------------------------------------------------------------------------按照字母进行排序,注意 -t 后面的引号里需要有一个空格,这里的单引号,双引号都无所谓
[root@Jesse ~]# sort -t" " -k 1 a.txt
baidue 100 5000
google 110 5000
gugeee 120 3000
sohuee 101 4500
[root@Jesse ~]# sort -t' ' -k 1 a.txt
baidue 100 5000
google 110 5000
gugeee 120 3000
sohuee 101 4500
按照以空格为分割域的第二域进行排序
[root@Jesse ~]# sort -t' ' -k 2 a.txt
baidue 100 5000
sohuee 101 4500
google 110 5000
gugeee 120 3000
我们来测试下第二域相同的情况
[root@Jesse ~]# cat a.txt
google 110 5000
baidue 100 5010
gugeee 120 3000
sohuee 100 4500
通过以下实例我们发现,以空格为分割域,第二域相同的时候,第三域是没有任何次序的,如果遇到第二域相同,第三域也要进行排序的时候,我们怎么办呢
[root@Jesse ~]# sort -n -t' ' -k 2 a.txt
baidue 100 5010
sohuee 100 4500
google 110 5000
gugeee 120 3000
看如下演示,如果第二域相同,那么我们将从第三域进行升降处理
[root@Jesse ~]# sort -n -t' ' -k 2 -k 3 a.txt
sohuee 100 4500
baidue 100 5010
google 110 5000
gugeee 120 3000
如果我想让以空格为分割域的第三域进行倒叙排列
[root@Jesse ~]# sort -n -t' ' -k 3r a.txt
baidue 100 5010
google 110 5000
sohuee 100 4500
gugeee 120 3000
如果我想让以空格为分割域的第三域以正序进行排列
[root@Jesse ~]# sort -t' ' -k 3n a.txt
gugeee 120 3000
sohuee 100 4500
google 110 5000
baidue 100 5010
如果第二域有两个数相同,那么我们将以升降来排序
[root@Jesse ~]# sort -t' ' -k 2n -k 3n a.txt
sohuee 100 4500
baidue 100 5010
google 110 5000
gugeee 120 3000
如过只是想从第三个字母起进行排序
[root@Jesse ~]# sort -t' ' -k 1.3 a.txt
gugeee 120 3000
sohuee 100 4500
baidue 100 5010
google 110 5000
如果只想以第一域的第三个字符进行排序:-k 1.3,1.3 表示只以第三个字母进行排序
[root@Jesse ~]# sort -t' ' -k 1.3,1.3 a.txt
gugeee 120 3000
sohuee 100 4500
baidue 100 5010
google 110 5000
n表示进行排序,r表示逆序
[root@Jesse ~]# sort -t" " -k 2nr a.txt
gugeee 120 3000
google 110 5000
baidue 100 5010
sohuee 100 4500
以第二域进行排序,如果遇到重复的,就删除
[root@Jesse ~]# sort -t" " -k 2n -u a.txt
baidue 100 5010
google 110 5000
gugeee 120 3000
本文出自 “jesse's blog” 博客,请务必保留此出处http://zhangluya.blog.51cto.com/3349384/619609
功能:排序
语法:sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
参数:
-b 忽略每行前面开始出的空格字符。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-c 检查文件是否已经按照顺序排序。
-m 将几个排序好的文件进行合并。
-M 前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
-k 指定域
--help 显示帮助。
--version 显示版本信息。
--------------------------------------------------------------------------------------------------[root@Jesse ~]# cat c.txt
7 July
8 August
9 September
10 October
11 November
12 December
1 January
2 February
3 March
4 April
5 May
6 June
[root@Jesse ~]# sort -c c.txt
sort: c.txt:4: disorder: 10 October //说明未按照某种顺序进行排列,如果什么也不显示,则说明已按某种顺序分类。
--------------------------------------------------------------------------------------------------[root@Jesse ~]# cat a.txt
google 110 5000
baidue 100 5010
gugeee 120 3000
sohuee 100 4500
[root@Jesse ~]# cat b.txt
3 ladygaga 1
5 ladygaga 9
0 ladygaga 5
9 ladygaga 4
6 ladygaga 2
8 ladygaga 3
7 ladygaga 0
1 ladygaga 6
4 ladygaga 7
2 ladygaga 8
[root@Jesse ~]# sort -m a.txt c.txt //将两个文件内容整合到一起
7 July
8 August
9 September
10 October
11 November
12 December
1 January
2 February
3 March
4 April
5 May
6 June
google 110 5000
baidue 100 5010
gugeee 120 3000
sohuee 100 4500
--------------------------------------------------------------------------------------------------进行月份排序
[root@Jesse ~]# cat c.txt
July
August
September
October
November
December
January
February
March
April
May
June
[root@Jesse ~]# sort -M c.txt
January
February
March
April
May
June
July
August
September
October
November
December
--------------------------------------------------------------------------------------------------[root@Jesse ~]# sort -M c.txt -o d.txt //将内容排序后导入到d.txt这个文件。
--------------------------------------------------------------------------------------------------[root@Jesse ~]# cat e.txt
1
2
3
4
5
6
7
8
[root@Jesse ~]# sort -r e.txt //逆序进行排列
8
7
6
5
4
3
2
1
--------------------------------------------------------------------------------------------------[root@Jesse ~]# cat a.txt
google 110 5000
baidue 100 5010
gugeee 120 3000
sohuee 100 4500
[root@Jesse ~]# sort -t" " -k 3 a.txt //出现空格的地方作为第一域进行分类
gugeee 120 3000
sohuee 100 4500
google 110 5000
baidue 100 5010
########################################################################有关-k 的实例演示
########################################################################准备工作:
[root@Jesse ~]# cat a.txt
google 110 5000
baidue 100 5000
gugeee 120 3000
sohuee 101 4500
------------------------------------------------------------------------------------------------按照字母进行排序,注意 -t 后面的引号里需要有一个空格,这里的单引号,双引号都无所谓
[root@Jesse ~]# sort -t" " -k 1 a.txt
baidue 100 5000
google 110 5000
gugeee 120 3000
sohuee 101 4500
[root@Jesse ~]# sort -t' ' -k 1 a.txt
baidue 100 5000
google 110 5000
gugeee 120 3000
sohuee 101 4500
按照以空格为分割域的第二域进行排序
[root@Jesse ~]# sort -t' ' -k 2 a.txt
baidue 100 5000
sohuee 101 4500
google 110 5000
gugeee 120 3000
我们来测试下第二域相同的情况
[root@Jesse ~]# cat a.txt
google 110 5000
baidue 100 5010
gugeee 120 3000
sohuee 100 4500
通过以下实例我们发现,以空格为分割域,第二域相同的时候,第三域是没有任何次序的,如果遇到第二域相同,第三域也要进行排序的时候,我们怎么办呢
[root@Jesse ~]# sort -n -t' ' -k 2 a.txt
baidue 100 5010
sohuee 100 4500
google 110 5000
gugeee 120 3000
看如下演示,如果第二域相同,那么我们将从第三域进行升降处理
[root@Jesse ~]# sort -n -t' ' -k 2 -k 3 a.txt
sohuee 100 4500
baidue 100 5010
google 110 5000
gugeee 120 3000
如果我想让以空格为分割域的第三域进行倒叙排列
[root@Jesse ~]# sort -n -t' ' -k 3r a.txt
baidue 100 5010
google 110 5000
sohuee 100 4500
gugeee 120 3000
如果我想让以空格为分割域的第三域以正序进行排列
[root@Jesse ~]# sort -t' ' -k 3n a.txt
gugeee 120 3000
sohuee 100 4500
google 110 5000
baidue 100 5010
如果第二域有两个数相同,那么我们将以升降来排序
[root@Jesse ~]# sort -t' ' -k 2n -k 3n a.txt
sohuee 100 4500
baidue 100 5010
google 110 5000
gugeee 120 3000
如过只是想从第三个字母起进行排序
[root@Jesse ~]# sort -t' ' -k 1.3 a.txt
gugeee 120 3000
sohuee 100 4500
baidue 100 5010
google 110 5000
如果只想以第一域的第三个字符进行排序:-k 1.3,1.3 表示只以第三个字母进行排序
[root@Jesse ~]# sort -t' ' -k 1.3,1.3 a.txt
gugeee 120 3000
sohuee 100 4500
baidue 100 5010
google 110 5000
n表示进行排序,r表示逆序
[root@Jesse ~]# sort -t" " -k 2nr a.txt
gugeee 120 3000
google 110 5000
baidue 100 5010
sohuee 100 4500
以第二域进行排序,如果遇到重复的,就删除
[root@Jesse ~]# sort -t" " -k 2n -u a.txt
baidue 100 5010
google 110 5000
gugeee 120 3000
本文出自 “jesse's blog” 博客,请务必保留此出处http://zhangluya.blog.51cto.com/3349384/619609
相关文章推荐
- linux下sort命令使用详解
- 万字长文精心整理21个常用Linux命令详解及使用案例
- 赋crontab -e 权限以及使用命令详解
- grep 命令 使用详解
- linux sort 命令详解
- 【Linux】Linux PS命令详解与使用
- linux tar命令使用详解
- Linux网络状态工具ss命令使用详解
- keytool密钥和证书管理工具-使用详解(整理)
- Find命令详解整理
- Memcached常用命令以及使用说明详解
- redis命令详解与使用场景举例——List
- Linux rpm 命令参数使用详解[介绍和应用]
- chattr命令使用详解
- Linux下创建文本文件(vi/vim命令使用详解)
- Linux中su命令使用详解
- MySQL中的导出数据(mysqldump)命令使用详解
- linux shell 脚本攻略学习8---md5校验,sort排序,uniq命令详解
- linux ln 命令使用参数详解
- 详解基于Linux下正则表达式(基本正则和扩展正则命令使用实例)