阿Q的Linux运维学习之路(day8-2)-Linux文件管理-sort排序、uniq去重

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
发布了38 篇原创文章 · 获赞 0 · 访问量 601

猜你喜欢

转载自blog.csdn.net/qq_39095114/article/details/104755453