如何使用Linux shell脚本生成文本文件中的唯一行列表?

问题描述 投票:11回答:4

假设我有一个包含一堆行的文件,有些重复:

line1
line1
line1
line2
line3
line3
line3

我应该使用什么linux命令来生成唯一行的列表:

line1
line2
line3

如果文件未排序,这是否会改变,即重复行可能不在块中?

linux unique lines
4个回答
31
投票

如果您不介意输出被排序,请使用

sort -u

这会对重复项进行排序和删除


9
投票

cat输出内容,用管道输送到sort进行排序,用管道输送到uniq打印出独特的值:

cat test1.txt | sort | uniq

如果文件内容已经排序,则不需要执行sort部分。


3
投票

使用唯一行创建新的排序文件:

sort -u file >> unique_file

使用唯一线条(未排序)创建新文件:

cat file | uniq >> unique_file

1
投票

如果我们不关心订单,那么最好的解决方案实际上是:

sort -u file

如果我们也想忽略大小写字母,我们可以使用它(因此所有字母都将转换为大写):

sort -fu file

似乎更好的想法是使用命令:

uniq file

如果我们也想忽略大小写字母(结果返回第一行重复项,大小写没有任何变化):

uniq -i file

但是,在这种情况下,可能会返回与我们使用sort命令时完全不同的结果,因为uniq命令不会检测重复的行,除非它们是相邻的。

© www.soinside.com 2019 - 2024. All rights reserved.