sort排序
sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。
语法格式:命令 选项 参数
常用选项:
-r:倒序
-n:按数字排序
-t:指定分隔符(默认空格)
-k:指定第几列, 指定几列几字符(指定1,1 3.1,3.3)
假设我们在当前目录现在有一个名为file.txt的文件,文件内容为:
a:5
f:2
c:6
e:1
b:3
d:4
然后我们使用sort命令来给文件进行排序。
[root@localhost ~]# sort file3.txt #不添加选项,默认以第一列字符排序
a:5
b:3
c:6
d:4
e:1
f:2
[root@localhost ~]# sort -t ":" -k2 file3.txt
#以 :为分隔符,按照第二列字符排序,默认从小到大
e:1
f:2
b:3
d:4
a:5
c:6
[root@localhost ~]# sort -t ":" -k2 -nr file3.txt
#以 :为分隔符,按照第二列数字来倒序排序,从大到小排序
c:6
a:5
d:4
b:3
f:2
e:1
uniq去重
uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。
语法格式:命令 选项 参数
常用选项:
-c 或——count 计算重复的行有多少行
-d或--repeated 仅显示重复出现的行列
假设文件file2.txt内容为:
abc
123
abc
123
456
abc
789
直接使用uniq去重是没有任何效果的
例如:
[root@localhost ~]# uniq file4.txt
abc
123
abc
123
456
abc
789
因为uniq只能去相邻行去重,我们需要先排序,然后去重,最后统计。
[root@localhost ~]# sort file4.txt | uniq
#先使用sort对文件进行排序,然后把排序过的内容通过管道使用uniq去重
123
456
789 #去重之后就剩下四行内容了
abc
[root@localhost ~]# sort file4.txt | uniq -c
#使用-c选项,计算去重之后,每行内容有多少行重复
2 123
1 456
1 789
3 abc