У меня есть текстовый файл, который имеет различные слова в строке.
Как я могу найти 12 наиболее часто появляющихся строк в файле и отобразить их?
Я не очень хорош с командами сценариев.
Если бы я мог получить команду и объяснение, чтобы я мог понять, как ее использовать и расширить свои знания о командах, это было бы здорово!
Ответы:
Вы можете легко сделать это с помощью встроенных команд.
sort
. Нам нужно это для следующего шага.uniq -c
. Он будет считать уникальное вхождение каждой строки. Если подобные строки не являются соседними, это не сработало бы без сортировки.sort
, который теперь сортируется в обратном порядке (r
) и основан на числовой (n
) интерпретацииuniq
выходных данных. Нам нужен числовой параметр , так как в противном случае, пространство перед числами приведет к неправильным результатам (см GNUsort
помощи «s для более).head
.Команда будет тогда:
Вывод здесь содержит фактическое количество вхождений.
Чтобы получить только необработанный список строк, вы можете передать вывод
sed
:Пример:
Вывод первой команды, но только выбор 2 из
head
:Выход из второй команды:
источник
uniq
.sort -rn
сортирует в обратном порядке, используя в качестве поля сортировки число рядом с каждой производимой строкойuniq -c
? Я думал,k1
что будет использовано что-то подобное или что-то подобноеr
инвертирует иn
численно сортирует по числу, производимомуuniq
. Что именно вы имеете в видуk1
?man
и я понял, что синтаксис, использующий-k
что-то, должен использоваться для выбора поля для сортировкиЕсли в вашем дистрибутиве есть logtop
Если ваш файл постоянно растет, как файл журнала, попробуйте:
источник