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

Naw*_*que 102 shell text-processing

假设有一列数值如下:

文件1:

1 
2
3
3
3
4
4
4
5
6
Run Code Online (Sandbox Code Playgroud)

我想要输出:

3  
4
Run Code Online (Sandbox Code Playgroud)

也就是说,只有重复的行。是否有任何命令行工具可以在 Linux 中找到这一点?(注意:数值按数字排序)。

cam*_*amh 163

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

uniq -d file.txt
Run Code Online (Sandbox Code Playgroud)

如果文件没有排序,sort(1)首先运行它:

sort file.txt | uniq -d
Run Code Online (Sandbox Code Playgroud)

这将仅打印出重复项。

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

  • @MiNdFrEaK `排序 | uniq -c | grep '^\s*3\s' | sed 's/^\s*[0-9]*\s*//'` 表示一式三份;用任何 N 替换“3”以表示 N 次重复 (11认同)
  • 排序文件.txt | uniq -d (2认同)

jas*_*ard 6

uniq 需要对您的列表进行排序,排序默认为字母顺序

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

或者

cat fileName | sort | uniq -d