Отримайте найпоширеніші рядки, що з’являються з файлу в Linux


11

У мене є текстовий файл з різними словами в рядку.
Як я можу знайти 12 найпоширеніших рядків у файлі та відобразити їх?
Мені не дуже добре з командами сценаріїв.

Якби я міг отримати команду та пояснення, щоб я міг зрозуміти, як її використовувати та розширити свої знання на команди, було б чудово!


Відповіді:


21

Ви можете легко зробити це за допомогою вбудованих команд.

  • Подайте вміст файлу 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!

1
Ви повинні сортувати його перед використанням uniq.
cYrus

@slhck: Дякую! Одне запитання: sort -rnСортування у зворотному порядку, використовуючи в якості сортування поле число поруч із кожним рядком, що виробляється uniq -c? Я думав, що щось подібне k1чи щось подібне буде використано
Джим

@Jim Рівно. rобертається і nчисельно сортує за кількістю, виробленою uniq. Що саме ти маєш на увазі k1?
slhck

@slhck: Я намагався з'ясувати ці команди, використовуючи, manі я зрозумів, що -kдля вибору поля для сортування потрібно використовувати синтаксис, що використовує щось
Джим

@cYrus: Який кращий випадок, який потрібен заздалегідь?
Джим

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.