8 个 Uniq 命令示例 [删除 Linux 中的重复行]
作为 Linux 用户,我们经常与各种类型的文件交互。任何计算机系统上最常见的文件类型之一就是纯文本文件。通常,在这些文件中查找所需文本是一项非常常见的需求。
但是,如果文件包含重复条目,这个简单的任务很快就会变得烦人。在这种情况下,我们可以使用uniq命令有效地过滤重复的文本。
在 Linux 中,当我们想要列出或删除相邻的重复行时,我们可以使用uniq命令,该命令非常方便。
除此之外,我们还可以使用 uniq 命令来统计重复条目。需要注意的是,uniq 命令仅当重复条目相邻时才有效。
在这个简单的指南中,我们将通过 Linux 中的实际示例深入讨论uniq命令。
uniq 命令语法
uniq命令的语法非常容易理解,与其他 Linux 命令类似:
$ uniq [OPTIONS] [INPUT] [OUTPUT]
值得注意的是,uniq命令的所有选项和参数都是可选的。
创建示例文本文件
首先,让我们用vi 编辑器创建一个简单的文本文件,并在相邻行中添加以下重复的内容。
$ vi linux-distributions.txt $ cat linux-distributions.txt
现在,我们通过这个文件来了解uniq命令的用法。
1. 从文本文件中删除重复行
uniq命令的常见用途之一是从文本文件中删除相邻的重复行,如图所示。
$ uniq linux-distributions.txt
在上面的输出中,我们可以看到uniq命令成功消除了重复的行。
2. 统计文本文件中的重复行
在上例中,我们看到了如何删除重复的行。但是,有时我们还想知道重复的行出现了多少次。
我们可以使用-c
如下例所示的选项来实现这一点:
$ uniq -c linux-distributions.txt
在上面的输出中,第一列表示该行重复的次数。
3. 不区分大小写删除重复项
默认情况下,uniq命令区分大小写。但是,我们可以使用-i
如下所示的选项禁用此默认行为。
$ uniq -i linux-distributions.txt
在这个例子中,我们可以观察到,字符串Ubuntu和UBUNTU被视为相同。与此同时,字符串CentOS和CENTOS也是如此。
4. 仅打印文件中的重复行
有时,我们只想从文本文件中打印重复的行,在这种情况下,您可以使用-d
如图所示的选项。
$ uniq -d linux-distributions.txt
在上面的输出中,我们可以看到uniq命令显示了每个组的重复条目。
5. 打印文件中的所有重复行
在前面的例子中,我们看到了如何显示每个组中的重复行。以类似的方式,我们也可以使用以下选项显示所有重复行-D
:
$ uniq -D linux-distributions.txt
上述输出不显示文本UBUNTU、CENTOS和Alpine,因为它们是唯一的行。
6. 按组在新行中显示重复行
在上例中,我们打印了所有重复的行。但是,我们可以用新行分隔每组,从而使输出更具可读性。
让我们使用该--all-repeated=separate
选项来实现相同的目的:
$ uniq --all-repeated=separate linux-distributions.txt
在上面的输出中,我们可以看到每个重复的组都由新行分隔符分隔。
7. 仅打印文件中的唯一行
在前面的例子中,我们看到了如何打印重复的行。同样,我们也可以指示uniq命令仅打印非重复的行。
现在,让我们使用-u
选项仅打印唯一的行:
$ uniq -u linux-distributions.txt
在这里,我们可以看到uniq命令显示不重复的行。
8. 删除文件中不相邻的重复行
uniq命令的一个微不足道的限制是它只能删除相邻的重复条目。但是,有时我们想删除重复条目,而不管它们在给定文件中的顺序如何。
在这种情况下,首先,我们可以对文件内容进行排序,然后将该输出通过管道传输到 uniq 命令,如图所示。
$ sort linux-distributions.txt | uniq
在此示例中,我们使用了不带任何选项的sort和uniq命令。但是,我们也可以将其他受支持的选项与这些命令组合使用。
结论
在本指南中,我们通过实际示例学习了uniq命令。您知道 Linux 中uniq命令的其他最佳示例吗?请在下面的评论中告诉我们您的观点。