使用 Linux 命令行从文本文件中删除重复行使用 Linux 命令行从文本文件中删除重复行使用 Linux 命令行从文本文件中删除重复行使用 Linux 命令行从文本文件中删除重复行
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

使用 Linux 命令行从文本文件中删除重复行

发表 admin at 2025年2月28日
类别
  • 未分类
标签

可以通过 Linux 命令行从文本文件中删除重复行。这样的任务可能比你想象的更常见和必要。最常见的有用场景是日志文件。通常,日志文件会一遍又一遍地重复相同的信息,这使得文件几乎无法筛选,有时甚至使日志变得毫无用处。

在本指南中,我们将展示各种命令行示例,您可以使用它们从文本文件中删除重复行。在您自己的系统上尝试一些命令,并使用最适合您的场景的命令。

在本教程中您将学习:

  • 排序时如何从文件中删除重复行

  • 如何计算文件中重复行的数量

  • 如何删除重复行而不对文件进行排序

在 Linux 上从文本文件中删除重复行的各种示例

从文本文件中删除重复行

这些示例适用于任何 Linux 发行版,前提是您使用的是 Bash shell。

对于我们的示例场景,我们将使用以下文件,其中仅包含各种 Linux 发行版的名称。出于示例目的,这是一个非常简单的文本文件,但实际上您可以在包含数千个重复行的文档上使用这些方法。我们将使用下面的示例了解如何从此文件中删除所有重复项。


$ cat distros.txt
Ubuntu
CentOS
Debian
Ubuntu
Fedora
Debian
openSUSE
openSUSE
Debian
  1. uniq 命令能够从文件中隔离所有唯一的行,但这仅在重复行彼此相邻的情况下才有效。为了使行相邻,首先需要将它们按字母顺序排序。以下命令可以通过使用 sort 和 uniq 来工作。

    
    $ sort distros.txt | uniq
    CentOS
    Debian
    Fedora
    openSUSE
    Ubuntu
    

    为了让事情变得更简单,我们可以只使用 -u 进行排序来获得相同的精确结果,而不是通过管道传输到 uniq。

    
    $ sort -u distros.txt
    CentOS
    Debian
    Fedora
    openSUSE
    Ubuntu
    
  2. 要查看文件中每行出现的次数,我们可以将 -c(计数)选项与 uniq 结合使用。

    
    $ sort distros.txt | uniq -c
          1 CentOS
          3 Debian
          1 Fedora
          2 openSUSE
          2 Ubuntu
    
  3. 要查看最常重复的行,我们可以使用 -n (数字排序)和 -r 反向选项通过管道传输到另一个排序命令。这使我们能够快速查看文件中哪些行重复最多——这是筛选日志的另一个方便的选项。

    
    $ sort distros.txt | uniq -c | sort -nr
          3 Debian
          2 Ubuntu
          2 openSUSE
          1 Fedora
          1 CentOS
    
  4. 使用前面的命令的一个问题是我们依赖sort。这意味着我们的最终输出是按字母顺序排序的,或者像前面的示例一样按重复次数排序。有时这可能是一件好事,但如果我们需要文本文件保留其先前的顺序怎么办?我们可以通过使用以下语法中的 awk 命令来消除重复行,而无需对文件进行排序。

    
    $ awk '!seen[$0]++' distros.txt 
    Ubuntu
    CentOS
    Debian
    Fedora
    openSUSE
    
  5. 前面的示例将直接将输出发送到您的终端。如果您想要一个过滤掉重复行的新文本文件,您可以通过简单地使用 > bash 运算符来修改这些示例,如以下命令所示。

    
    $ awk '!seen[$0]++' distros.txt > distros-new.txt
    

这些应该是您从文件中删除重复行所需的所有命令,同时可以选择对行进行排序或计数。确实存在更多方法,但这些是最容易使用和记住的。

结束语

在本指南中,我们看到了在 Linux 上从文本文件中删除重复行的各种命令示例。您可以将这些命令应用于日志文件或任何其他类型的具有重复行的纯文本文件。我们还学习了如何对文本文件的行进行排序或计算重复项的数量,因为这有时可以加快从文档中分离出我们需要的信息的速度。

©2015-2025 Norria support@norria.com