Shell中的sort和uniq命令

旧时模样 提交于 2020-02-27 07:07:17

Shell中的sortuniq命令

sort :通常用来排序

uniq :通常对重复字符进行处理


sort -n

sort -r

sort -u   去重,u: unique(独一无二的)

sort -o   指定输出文件

sort -t    指定分隔符

sort -k    指定列排序(配合-t使用)

所有参数都不改变原文件,只是在终端输出

 

uniq -u  显示不重复的行

uniq -d  只显示重复的行

uniq -c  显示所有数字重复的次数

 

[root@localhost sort-uniq]# cat numbers

12

2

1

3

55

5

5

354

54

0

[root@localhost sort-uniq]# sort numbers

#默认对每一行的第一个单个数字进行排序

0

1

12

2

3

354

5

5

54

55

 

[root@localhost sort-uniq]# sort -n numbers   #对纯数字排序

0

1

2

3

5

5

12

54

55

354

 

[root@localhost sort-uniq]# sort -rn numbers #反向纯数字排序

354

55

54

12

5

5

3

2

1

0

 

 

 

[root@localhost sort-uniq]# sort -rn numbers -o NUM     #-o指定输出文件

[root@localhost sort-uniq]# ls

NUM  numbers

[root@localhost sort-uniq]# cat NUM

354

55

54

12

5

5

3

2

1

0

 

 

[root@localhost sort-uniq]# sort -u numbers     #-u 去重原文件没变

0

1

12

2

3

354

5

54

55

[root@localhost sort-uniq]# cat numbers

12

2

1

3

55

5

5

354

54

0

 

 

[root@localhost sort-uniq]# sort -run numbers #纯数字反向排序去重

354

55

54

12

5

3

2

1

0

 

[root@localhost sort-uniq]# sort -run numbers

354

55

54

12

5

3

2

1

0

[root@localhost sort-uniq]# sort -n numbers | uniq -c  

#用管道将纯数字排序的结果传给uniq -c 显示重复的次数

      1 0

      1 1

      1 2

      1 3

      2 5

      1 12

      1 54

      1 55

      1 354

[root@localhost sort-uniq]# sort -n numbers | uniq -d

5

[root@localhost sort-uniq]# sort -n numbers | uniq -u

0

1

2

3

12

54

55

354

 

 

[root@localhost sort-uniq]# cat test

bananna:30:5.5     #水果名称 水果数量 水果单价

apple:10:2.5

pear:90:2.3

orange:20:3.4

[root@localhost sort-uniq]# sort -n -k 2 -t ':' test 

#按照水果数量排序,因为是按数字,所以 -n

apple:10:2.5

orange:20:3.4

bananna:30:5.5

pear:90:2.3

 

 

练习:

每列的信息:姓名 身高 年龄 工资

lisi 170 25 6000

qangwu 170 28 5000

zhangsan 175 20 5000

Zhangxiaoliu 165 30 6000

 

#按照员工姓名进行排序

[root@localhost sort-uniq]# sort -n -k 2  info或sort -k 2 -t ' ' info

Zhangxiaoliu 165 30 6000

lisi 170 25 6000

qangwu 170 28 5000

zhangsan 175 20 5000

#按照员工身高进行排序

[root@localhost sort-uniq]# sort  -k 1 info    或sort -k 1 -t ' ' info  

#默认以空格为分隔符,所以可以不指定

lisi 170 25 6000

qangwu 170 28 5000

zhangsan 175 20 5000

Zhangxiaoliu 165 30 6000

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!