Ви можете легко зробити це за допомогою вбудованих команд.
- Подайте вміст файлу
sort
. Це нам потрібно для наступного кроку.
- Це іде до
uniq -c
. Він буде рахувати унікальне виникнення кожного рядка. Якби подібні лінії не були суміжними, це не працювало без сортування раніше.
- Потім подайте його іншому
sort
, який тепер сортує у зворотному порядку ( r
) та на основі чисельної ( n
) інтерпретації uniq
виводу. Нам потрібен варіант числення, оскільки в іншому випадку простір перед номерами призведе до помилкових результатів (докладнішу інформацію див . У довідці GNUsort
).
- Нарешті, покажіть лише перші дванадцять рядків
head
.
Командою буде:
sort test.txt | uniq -c | sort -rn | head -n 12
Вихідні дані містять фактичну кількість подій.
Щоб отримати лише необроблений список рядків, ви можете передавати вихід на sed
:
sort test.txt | uniq -c | sort -rn | head -n 12 | sed -E 's/^ *[0-9]+ //g'
Приклад:
I'm not there very often
I'm not there very often
Look at me!
Look at me!
Look at me!
Hello there!
Hello there!
Hello there!
Hello there!
Hello there!
Hello there!
Виведіть з першої команди, але лише вибравши 2 з head
:
6 Hello there!
3 Look at me!
Вихід з другої команди:
Hello there!
Look at me!