Чтобы найти повторяющиеся совпадения по `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