Підрахунок унікальних рядків та дублікатів у текстовому файлі

підрахунок

Буквально сьогодні на роботі зіткнувся з досить простим завданням, що складається з двох підзадач: 1) потрібно було підрахувати в текстовому файлі кількість унікальних рядків; 2) підрахувати в вже іншому файлі кількість рядків, що дублюються. З цими завданнями я впорався і після цього подумав — чому б не написати невелику посаду, раптом комусь знадобиться.

Наприклад, ми маємо текстовий файл з ім'ям data.txt:

Elena 176 60 Egor 181 80 Victor 190 85 Jane 167 56 Egor 181 80 Jeff 191 90 Lena 176 60 Kate 180 65 80 Jane 167 56 Егор 181 80

Підрахуємо кількість унікальних рядків за допомогою наступної команди:

$ sort data.txt uniq -u wc -l

Все досить просто. Утиліта uniq з опцією -u виводить на екран унікальні рядки (u - unique, мабуть так) і за допомогою результату перенаправляється в утиліту wc, яка просто вважає кількість рядків, т.к. виконується з опцією -l. На початку нам потрібно відсортувати вхідний потік даних (текстовий файл), інакше утиліта uniq не зможе правильно підрахувати унікальні рядки. Виконується сортування за допомогою sort та результат, використовуючи , перенаправляється в uniq. Після виконання такої команди файлу data.txt на екран буде виведено число 5.

Для того щоб вирішити друге підзавдання, зробимо все те саме, тільки uniq буде виконаний з опцією -d (мабуть d - duplicate):

$ sort data.txt uniq -d wc -l

У результаті екран виведено число 2. Обидві подзадачи вирішені досить простим способом. Записав невелику демонстрацію комусь цікаво.

P. S. Хто є у твіттері - додавайтеся :)