14

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

line1
line1
line1
line2
line3
line3
line3

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

line1
line2
line3

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

4

4 回答 4

35

如果您不介意对输出进行排序,请使用

sort -u

这会排序并删除重复项

于 2013-05-30T16:06:53.983 回答
11

cat输出内容,通过管道sort对它们进行排序,通过管道uniq打印出唯一值:

cat test1.txt | sort | uniq

sort如果文件内容已经排序,则无需执行此操作。

于 2013-05-30T16:07:02.330 回答
4

创建具有唯一行的新排序文件:

sort -u file >> unique_file

使用唯一行(未排序)创建一个新文件:

cat file | uniq >> unique_file
于 2018-04-10T06:08:56.350 回答
1

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

sort -u file

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

sort -fu file

似乎更好的主意是使用以下命令:

uniq file

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

uniq -i file

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

于 2019-03-14T12:08:14.570 回答