如何仅打印文本文件中的重复值?

如何仅打印文本文件中的重复值?

假设有一列数值,如下所示:

文件1:

1 
2
3
3
3
4
4
4
5
6

我想要输出:

3  
4

也就是说,只有重复的行。有没有命令行工具可以在 Linux 中找到这个问题? (注意:这些值按数字排序)。

答案1

uniq(1)如果文件已排序,您可以使用此方法:

uniq -d file.txt

如果文件未排序,请先运行它sort(1)

sort file.txt | uniq -d

这将仅打印出重复项。

从技术上讲,输入不需要按排序顺序,但文件中的重复项需要是连续的。实现此目的的常用方法是对文件进行排序。

答案2

uniq要求对列表进行排序,默认按字母顺序排序

sort path/to/your/filename | uniq -d

或者

cat fileName | sort | uniq -d

答案3

执行这个:perl -ne 'print if $a{$_}++' filename.txt

答案4

使用uniqawk

cat File1  | uniq -c | awk '$1 > 1 { print $2 }'

相关内容