Shell中的sort和uniq命令
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
来源:CSDN
作者:huige永生
链接:https://blog.csdn.net/qq_43309149/article/details/104345072