您是否遇到过包含重复行和重复单词的文本文件? 也许您经常使用命令输出并希望过滤那些不同的字符串。 对于 Linux 中的文本文件和冗余数据的删除,uniq 命令是您的最佳选择。
在本文中,我们将深入讨论 uniq 命令,以及有关如何使用该命令从文本文件中删除重复行的详细指南。
什么是 uniq 命令?
Linux 中的 uniq 命令用于在文本文件中显示相同的行。 如果要从文本文件中删除重复的单词或字符串,此命令会很有帮助。 由于 uniq 命令匹配相邻行以查找冗余副本,因此它仅适用于已排序的文本文件。
幸运的是,你可以通过管道 种类 命令与 uniq 以与命令兼容的方式组织文本文件。 除了显示重复行之外,uniq 命令还可以计算文本文件中重复行的出现次数。
如何使用 uniq 命令
您可以在 uniq 中使用各种选项和标志。 其中一些是基本的并执行简单的操作,例如打印重复的行,而另一些则适用于经常在 Linux 上处理文本文件的高级用户。
基本语法
uniq 命令的基本语法是:
uniq option input output
…在哪里 选项 是用于调用命令的特定方法的标志, 输入 是要处理的文本文件,并且 输出 是将存储输出的文件的路径。
这 输出 参数是可选的,可以跳过。 如果用户没有指定输入文件,uniq 会从标准输出中获取数据作为输入。 这允许用户使用其他 Linux 命令通过管道传输 uniq。
示例文本文件
我们将使用文本文件 重复的.txt 作为命令的输入。
127.0.0.1 TCP
127.0.0.1 UDP
Do catch this
DO CATCH THIS
Don't match this
Don't catch this
This is a text file.
This is a text file.
THIS IS A TEXT FILE.
Unique lines are really rare.
请注意,我们已经使用 种类 命令。 如果您正在使用其他文本文件,则可以使用以下命令对其进行排序:
sort filename.txt > sorted.txt
删除重复行
uniq 最基本的用途是从输入中删除重复的字符串并打印唯一的输出。
uniq duplicate.txt
输出:
请注意,系统不会显示该行的第二次出现 这是一个文本文件. 此外,上述命令仅打印文件中的唯一行,不会影响原始文本文件的内容。
计算重复行
要输出文本文件中的重复行数,请使用 -C 使用默认命令标记。
uniq -c duplicate.txt
输出:
系统显示文本文件中存在的每一行的计数。 你可以看到这条线 这是一个文本文件 在文件中出现两次。 默认情况下,uniq 命令区分大小写。
仅打印重复行
要仅打印文本文件中的重复行,请使用 -D 旗帜。 这 -D 代表 复制.
uniq -D duplicate.txt
系统将显示如下输出。
This is a text file.
This is a text file.
检查重复项时跳过字段
如果要在匹配字符串时跳过一定数量的字段,可以使用 -F 用命令标记。 这 -F 代表 场地.
考虑以下文本文件 字段.txt.
192.168.0.1 TCP
127.0.0.1 TCP
354.231.1.1 TCP
Linux FS
Windows FS
macOS FS
要跳过第一个字段:
uniq -f 1 fields.txt
输出:
192.168.0.1 TCP
Linux FS
上述命令跳过了第一个字段(IP 地址和操作系统名称)并匹配了第二个单词(TCP 和 FS)。 然后,它将每个匹配项的第一次出现显示为输出。
比较时忽略字符
与跳过字段一样,您也可以跳过字符。 这 -s flag 允许您指定在匹配重复行时要跳过的字符数。 当您使用的数据是列表形式时,此功能会有所帮助,如下所示:
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth
忽略文件中的前两个字符(列表编号) 列表.txt:
uniq -s 2 list.txt
输出:
在上面的输出中,前两个字符被忽略,其余字符匹配唯一行。
检查前 N 个字符是否重复
这 -w flag 允许您仅检查固定数量的重复字符。 为了 example:
uniq -w 2 duplicate.txt
上述命令将只匹配前两个字符,如果有的话,将打印唯一的行。
输出:
删除区分大小写
如上所述,uniq 在匹配文件中的行时区分大小写。 要忽略字符大小写,请使用 -一世 选项与命令。
uniq -i duplicate.txt
您将看到以下输出。
注意在上面的输出中,uniq 没有显示这些行 抓住这个 和 这是一个文本文件.
将输出发送到文件
要将 uniq 命令的输出发送到文件,可以使用 输出重定向 (>) 字符如下:
uniq -i duplicate.txt > otherfile.txt
将输出发送到文本文件时,系统不显示命令的输出。 您可以使用以下命令检查新文件的内容 猫 命令。
cat otherfile.txt
您还可以使用其他方式将命令行输出发送到 Linux 中的文件。
使用 uniq 分析重复数据
大多数时候,在管理 Linux 服务器时,您要么在终端上工作,要么在编辑文本文件。 因此,知道如何删除文本文件中多余的行副本对于您的 Linux 技能集来说是一笔巨大的财富。
如果您不知道如何过滤和排序文件中的文本,使用文本文件可能会令人沮丧。 为了让您的工作更轻松,Linux 有几个文本编辑命令,例如 sed 和 awk 这使您可以有效地处理文本文件和命令行输出。