Чтобы найти повторяющиеся совпадения по `uniq -d`

Мои данные как /tmp/1

9367543
9105616
9108177
8948074
8860323
9170406
9105616

Я бегаю и ничего не получаю

cat /tmp/1 | uniq -d

Это странно, так как uniq -d должен

-d      Only output lines that are repeated in the input.

Как вы можете использовать uniq -d ?

3 ответа

Решение

Вы должны отсортировать данные, прежде чем использовать Uniq. Он только удаляет / обнаруживает дубликаты на соседних строках.

Попробуйте это дважды проверить, он выведет все строки, которые дублируются:

  cat /tmp/1 |  awk 'seen[$0]++ == 1'

О, это твоя проблема

 cat /tmp/1 | sort | uniq -d

Сортировка перед запуском uniq!

awk '{_[$0]++}END{for(i in _)if(_[i]>1) print i}' /tmp/1

или просто

awk '_[$0]++ == 1' file
Другие вопросы по тегам