shell中的uniq与sort命令

sort命令
sort命令通常用来排序,命令的一些常见用法:

命令用法 说明
sort -n 纯数字排序
sort -r 倒叙
sort -u 去掉重复数字
sort -o 输出到指定文件中
sort -t 指定分隔符
sort -k 指定要排序的列
sort -rn 反向纯数字排序
sort -rn numbers -o file 反向纯数字排序并将结果输出到文件中
sort -urn numbers 去掉重复数字纯数字反向排序

以上命令参数可以自由组合,示例:

[root@100 Desktop]# vim numbers
[root@100 Desktop]# cat numbers 
1
3
5
34
10
2
1
5
1
1
[root@100 Desktop]# sort numbers        #默认是正向排序,而且是对每行的第一个单个数字进行排序
1
1
1
1
10
2
3
34
5
5
[root@100 Desktop]# sort -n numbers    #-n 表示纯数字排序
1
1
1
1
2
3
5
5
10
34
[root@100 Desktop]# sort -r numbers     # -r 表示反向排序,也是对每行的第一个单个数字排序
5
5
34
3
2
10
1
1
1
1
[root@100 Desktop]# sort -rn numbers   #反向纯数字排序
34
10
5
5
3
2
1
1
1
1
[root@100 Desktop]# sort -rn numbers -o NUM    #-o 指定输出文件
[root@100 Desktop]# cat NUM 
34
10
5
5
3
2
1
1
1
1
[root@100 Desktop]# sort -u numbers            #-u表示unique独一无二的,去掉重复数字         
1
10
2
3
34
5
[root@100 Desktop]# sort -urn numbers          #去掉重复数字纯数字反向排序
34
10
5
3
2
1

指定分割符和列排序:

[root@100 Desktop]# cat numbers 
1:1
2:3
5:5
2:34
22:10
1:2
3:1
2:5
10:1
3:1

#-t 指定分隔符为: -k 指定列 第2列   !!!!!注意,对列进行处理,行内容不会改变
[root@100 Desktop]# sort -t : -k 2 numbers     
10:1
1:1
3:1
3:1
22:10
1:2
2:3
2:34
2:5
5:5

#以:为分隔符,对第2列纯数字正向排序
[root@100 Desktop]# sort -t : -k 2 numbers  -n      
10:1
1:1
3:1
3:1
1:2
2:3
2:5
5:5
22:10
2:34
#以:为分隔符 ,对第一列去掉重复数字之后反序
[root@100 Desktop]# sort -t : -k 1 numbers -rnu    
22:10
10:1
5:5
3:1
2:3
1:1

uniq命令

uniq命令可以对重复字符做出相应的处理

命令用法 说明
uniq -u 显示唯一的行
uniq -d 显示重复的行
uniq -c 每行显示一次并统计重复行数

该命令通常和sort命令组合使用:

[root@100 Desktop]# vim numbers 
[root@100 Desktop]# cat numbers 
1
3
5
34
10
2
1
5
1
1

#进行纯数字排序之后 重复数字只显示一次,并且在左边显示重复次数
[root@100 Desktop]# sort -n numbers | uniq -c      
      4 1
      1 2
      1 3
      2 5
      1 10
      1 34
#进行纯数字排序之后显示重复的行
[root@100 Desktop]# sort -n numbers | uniq -d     
1
5

#进行纯数字排序之后显示不重复的行
[root@100 Desktop]# sort -n numbers | uniq -u     
2
3
10
34
发布了94 篇原创文章 · 获赞 1 · 访问量 1776

猜你喜欢

转载自blog.csdn.net/qq_36417677/article/details/104398492