Linux Uniq检查及删除重复出现的行列

如果你主要是在命令行上工作,并且每天处理大量的文本文件,那么你应该了解下 uniq 命令~
☑ 该命令会帮助你轻松地从文件中找到重复的行。它不仅用于查找重复项,而且我们还可以使用它来删除重复项,显示重复项的出现次数,只显示重复的行,只显示唯一的行等。由于 uniq 命令是 GNU coreutils 包的一部分,所以它预装在大多数 Linux 发行版中,让我们不需要费心安装。来看一些实际的例子。
☑ 请注意,除非重复行是相邻的,否则 uniq 不会删除它们。因此你可能需要先对它们进行排序,或将排序命令与 uniq 组合以获得结果。

uniq 可检查文本文件中重复出现的行列

uniq 命令删除文件中的重复行。 uniq 命令读取由 InFile 参数指定的标准输入或文件。该命令首先比较相邻的行,然后除去第二行和该行的后续副本。

命令格式

uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]

常用命令选项

-c或--count							 在每列旁边显示该行重复出现的次数。
-d或--repeated						 仅显示重复出现的行列。
-i									  忽略大小写字符的不同。
-f<栏位>或--skip-fields=<栏位>		  忽略比较指定的栏位。
-s<字符位置>或--skip-chars=<字符位置>   忽略比较指定的字符。
-u或--unique 						 仅显示出一次的行列。
-w<字符位置>或--check-chars=<字符位置>  指定要比较的字符。
--help 	  显示帮助。
--version 显示版本信息。
[输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据;
[输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。

参考实例

// 重复的行并不相邻时,uniq 命令是不起作用的,即若文件内容为以下时,uniq 命令不起作用:
[root@localhost ~]# cat 1.txt 
test 30
hello 40
linux 50
test 30
[root@localhost ~]# uniq -c 1.txt 		//还是显示两边test
[root@localhost ~]# sort 1.txt | uniq -c
      1 hello 40
      1 linux 50
      2 test 30
显示重复的行:
[root@localhost ~]# sort 1.txt | uniq -d
test 30

No one is the best growth, come on!

猜你喜欢

转载自blog.csdn.net/qq_50573146/article/details/125356974