面试官都在问 | Linux命令之uniq

面试官都在问 | Linux命令之uniq_标准输出

0. 概述

在我们面试各大公司的时候,关于Linux往往最容易问到的问题之一就是Linux指令,而其中,能够使用命令快速

的检查及删除文本文件中重复出现的行列已经成为了使用Linux系统的必备技能了,所以,面试官往往通过对于该

命令的考察,获取应聘者对Linux环境是否熟悉。我们结合海量面经,提取出最容易被问到的Linux当中检查及删

除文本文件中重复出现的行列的命令以及命令行参数,供大家参考

  • 如何去除文件当中重复的行输出到标准输出设备
  • 如何删除文件当中重复的行输出到指定文件当中
  • 如何在每列旁边显示该行重复的次数
  • 如何只显示出现一次的行

1.linux命令之uniq

1.1 简述

​uniq​​ 命令用于检查及删除文本文件中重复出现的行列;如果使用该命令不加任何命令行参数,则视为删除指定文本文件当中重复的行之后进行输出;如果指定输出文件,则输出到指定文件当中。

1.2 高频选项
-c:在每列旁边显示该行重复出现的次数
-u:仅显示出现一次的行
[输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据
[输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)
1.3 命令测试文件内容

为了让大家看到测试文件当中的内容,使用cat命令查看文件当中内容

​cat​​命令:输出当前文件当中的内容,具体的用法:cat [filename]

[Ann@localhost testuniq]$ cat uniqfile
hello 20
linux 30
linux 30
linux 30
linux 30
nice 40
nice 40
nice

我们可以看到:

​hello 20​​ 出现了1次

​linux 30​​ 出现了4次

​nice 40​​ 出现了3次

1.4 去除文件当中重复的行输出到标准输出设备

​uniq [filename]​​ : uniq命令加上待去重的文件,就可以将该文件当中的重复的行去掉,只留下不同行的内容,并且输出到标准输出设备上。

[Ann@localhost testuniq]$ uniq uniqfile
hello 20
linux 30
nice

​uniq​​ : 去重的命令

​uniqfile​​ : 待去重的文件名称

hello 20
linux 30
nice

上面内容为我们使用uniq命令去重之后输出到标准输出的内容,请注意,在去重的过程中,uniqfile文件内容没有被改变,只是在输出的时候进行了过滤

1.5 删除文件当中重复的行并输出到指定文件当中

​uniq [filename1][filename2]​​:uniq命令加上待去重文件,加上输出文件。这样就可以将重复的行去掉并且输出到输出文件当中去

[Ann@localhost testuniq]$ uniq uniqfile test
[Ann@localhost testuniq]$ cat test
hello 20
linux 30
nice

​uniq​​ : 去重命令

​unqifile​​ : 待去重文件名称

​test​​:输出文件名称

​cat test​​:查看test文件当中的内容,我们可以看到已经将uniqfile当中重复的行去掉,将结果保存在test文件当中

1.6 在每列旁边显示该行重复的次数

​uniq -c [filename]​​​:​​uniq​​​命令加上​​-c​​命令行参数,加上待去重文件。这样就可以在每列旁边显示该行重复出现的次数

[Ann@localhost testuniq]$ uniq -c uniqfile
1 hello 20
4 linux 30
3 nice 40

​-c​​​ : ​​uniq​​命令的命令行参数,在每列旁边显示该行重复出现的次数

1.7 显示出现一次的行

​uniq -u [filename]​​​:​​uniq​​​命令加上​​-u​​命令行参数,加上待去重文件。这样就可以展示文件当中只出现一次的行

[Ann@localhost testuniq]$ uniq -u uniqfile
hello 20

​-u​​​ : ​​uniq​​命令的命令行参数,显示文件当中只出现一次的行

1.7 总结

​uniq [filename]​​:去除文件当中重复的行,输出到标准输出设备

​uniq [filename1][filename2]​​:删除文件当中重复的行,输出到指定文件当中

​uniq -c [filename]​​:在每列旁边显示该行重复的次数

​uniq -u [filename]​​:显示只出现一次的行

面试官都在问 | Linux命令之uniq_linux_02