uniq
только проверяет последовательных строк друг против друга. Таким образом, вы можете ожидать увидеть что-то напечатанное, только если в строке две или более строки Foo
, например.
Если вы хотите обойти это, сначала отсортируйте файл с sort
.
$ sort file.tmp | uniq -d
Foo
Если вам действительно нужно распечатать все непоследовательные повторяющиеся строки в порядке их появления в файле, вы можете использовать awk
для этого:
$ awk '{ if ($0 in lines) print $0; lines[$0]=1; }' file.tmp
, но для большого файла это может быть менее эффективно, чем sort
и uniq
. ( Может быть - я не пробовал.)