sort命令

--功能说明:以行为单位对文件进行排序。

--命令格式:sort  [参数] [<文件>...]

-b :忽略前导的空格。

-d :只考虑空格、字母和数字。

-f :忽略字母大小写。

-i :只考虑刻打印的字符。

-M :排序月份,(未知词)“JAN< ... <DEC”。

-n :根据字符串的数值进行排序。

-r :逆向排序。

-u :对相同的行过滤。

+n n为数字,对指定的行进行排序,+0表示第一列,以空格或制表符作为列的间隔符。

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

1

[root@lesliescripts]# cat sort.txt

aaa:10:1.1

ccc:30:3.3

ddd:40:4.4

fff:60:6.6

bbb:20:2.2

eee:50:5.5

ccc:30:3.3

ccc:30:3.3

bbb:20:2.2

[root@lesliescripts]# sort sort.txt

aaa:10:1.1

bbb:20:2.2

bbb:20:2.2

ccc:30:3.3

ccc:30:3.3

ccc:30:3.3

ddd:40:4.4

eee:50:5.5

fff:60:6.6

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

[root@lesliescripts]# cat sort.txt

aaa:10:1.1

ccc:30:3.3

ddd:40:4.4

fff:60:6.6

bbb:20:2.2

eee:50:5.5

ccc:30:3.3

ccc:30:3.3

bbb:20:2.2

[root@lesliescripts]# sort -u sort.txt

aaa:10:1.1

bbb:20:2.2

ccc:30:3.3

ddd:40:4.4

eee:50:5.5

fff:60:6.6

[root@lesliescripts]# uniq sort.txt

aaa:10:1.1

ccc:30:3.3

ddd:40:4.4

fff:60:6.6

bbb:20:2.2

eee:50:5.5

ccc:30:3.3

bbb:20:2.2

3. sort  -n是按照数字大小排序,-r是以相反顺序,-k是指定的第几个段排序,-t指定的分隔符为冒号。

[root@lesliescripts]# sort -nk 2-t: sort.txt

aaa:10:1.1

bbb:20:2.2

bbb:20:2.2

ccc:30:3.3

ccc:30:3.3

ccc:30:3.3

ddd:40:4.4

eee:50:5.5

fff:60:6.6

[root@lesliescripts]# sort -nrk 3 -t: sort.txt  

fff:60:6.6

eee:50:5.5

ddd:40:4.4

ccc:30:3.3

ccc:30:3.3

ccc:30:3.3

bbb:20:2.2

bbb:20:2.2

aaa:10:1.1

4.uniq命令用于消除文件中的重复内容,sort -u 对内容排序并消除重复行。

[root@lesliescripts]# cat web.txt

https://hao.360.cn/?360safe

https://hao.360.cn/?360safe

http://www.sina.com.cn/

http://www.sina.com.cn/

http://www.elong.com/

http://www.sina.com.cn/

http://www.elong.com/

http://www.elong.com/

http://www.elong.com/

[root@lesliescripts]# uniq web.txt

https://hao.360.cn/?360safe

http://www.sina.com.cn/

http://www.elong.com/

http://www.sina.com.cn/

http://www.elong.com/

[root@lesliescripts]# sort web.txt |uniq

http://www.elong.com/

http://www.sina.com.cn/

https://hao.360.cn/?360safe

[root@lesliescripts]# sort -u web.txt     

http://www.elong.com/

http://www.sina.com.cn/

https://hao.360.cn/?360safe

5.uniq -u只显示不重复的内容。

[root@lesliescripts]# cat web.txt

https://hao.360.cn/?360safe

https://hao.360.cn/?360safe

http://www.sina.com.cn/

http://www.sina.com.cn/

http://www.elong.com/

http://www.sina.com.cn/

http://www.elong.com/

http://www.elong.com/

http://www.elong.com/

[root@lesliescripts]# uniq -u web.txt

http://www.elong.com/

http://www.sina.com.cn/

[root@lesliescripts]# sort web.txt |uniq -u

6. uniq -c统计各行在文件中出现的次数。

[root@lesliescripts]# sort web.txt |uniq -c

      4 http://www.elong.com/

      3 http://www.sina.com.cn/

      2 https://hao.360.cn/?360safe

7. uniq -d在文件中找出重复的行。

[root@lesliescripts]# sort web.txt |uniq -d

http://www.elong.com/

http://www.sina.com.cn/

https://hao.360.cn/?360safe

8.按对应列排序:

  • 默认按整行排序

  • -t指定分隔符,-k1,分隔符之后的第一列排序。

  • -k 1 1 用逗号来分隔字段,表示第一个字段开始排序到第一个字段结束。

  • –k 1.1,3.3 用点分隔字符,表示第一个字段的第一个字符开始排序到第三个字段的第三个字符结束。