Як надрукувати лише текстові копії з текстового файлу?


68

Припустимо, є стовпець числових значень на зразок наступного:

Файл1:

1 
2
3
3
3
4
4
4
5
6

Я хочу вихід:

3  
4

Тобто лише повторні рядки. Чи є інструменти командного рядка, щоб дізнатися це в Linux? (Примітка: значення сортуються за числом).


3
Див man uniq.
Jasonwryan

Відповіді:


118

Ви можете використовувати uniq(1)для цього:

uniq -d file.txt

Це видасть лише дублікати. Вхідний файл повинен бути відсортований таким чином, щоб всі дублікати були послідовними (якими вони здаються), тому запустіть його спочатку через сортування, якщо його немає.


1
що робити, якщо я хочу, щоб трійки були надруковані тільки?
MiNdFrEaK

8
@MiNdFrEaK sort | uniq -c | grep '^\s*3\s' | sed 's/^\s*[0-9]*\s*//'для триплікатів ; замініть "3" будь-яким N для N-plicates
full.stack.ex

@MiNdFrEaK sort | uniq -c | sed -n 's/^[[:blank:]]*3[[:blank:]]\{1,\}//p'для триплікатів

@camh ви можете це зробити і на CSV-файлах? лише значення певного стовпця?
NumenorForLife

1
сортувати файл.txt | uniq -d
ron

1

Використання uniqта awk:

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

6
Ця робота, але я не бачу, чому ви трубопровід cat?
Бернхард

1
не всі знають, що ви можете зробити uniq -c File1так само і з багатьма іншими інструментами. Це, мабуть, тут і відбувається.
Маттіас

1

Виконайте це: perl -ne 'print if $a{$_}++' filename.txt


Він дає 3\n3\n4\n\4nдля введення File1, що, очевидно, неправильно.
yaegashi

фрагмент perl, який я переглядаю, надає кількість частот кожного рядка, щоб його можна було прокласти, сортувати та фільтрувати за потребою: perl -ne '$ a {$ _} ++; END {while (($ k, $ v) = кожен% a) {printf "% d \ t% s", $ v, $ k}} 'ім'я файлу
Теофраст

Чи є спосіб це зробити на певному стовпчику, розділеному заданим роздільником поля?
Геремія

Як вказує yaegashi, для виконання вимог потрібне невелике виправлення: perl -ne 'print, якщо 1 == $ a {$ _} ++' filename.txt Серед усіх відповідей - це моя улюблена, тому що інші відповіді вимагати попередньої обробки всіх даних з повним сортом. Ця відповідь запускає результати виходу швидше та ефективніше.
BOC
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.