您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: