Поскольку это не ответственность glibc. glibc делегирует к другим сервисам, установленным в системе для автора; если бы что-либо, это были бы те, которые обеспечили бы способность изменить userdb.
| sort | uniq -c
, Как указано в комментариях.
Передача по каналу вывода в вид
организует вывод в алфавитный/числовой порядок.
Это - требование, потому что uniq
только соответствует на повторных строках, т.е.
a
b
a
, Если вы будете использовать uniq
на этом текстовом файле, то это возвратит следующее:
a
b
a
Это вызвано тем, что два
с разделяются b
- они не последовательные строки. Однако при первой сортировке данных в алфавитный порядок сначала как
a
a
b
Затем , uniq
удалит строки повторения. опция-c
uniq
считает количество дубликатов и обеспечивает вывод в форме:
2 a
1 b
Ссылки:
можно использовать ассоциативный массив на awk, а затем - опционально - sort:
$ awk ' { tot[$0]++ } END { for (i in tot) print tot[i],i } ' access.log | sort
output:
1 c.php
1 d.php
2 b.php
3 a.php
[your command] | sort | uniq -c | sort -nr
Принятый ответ почти полный, возможно, вы захотите добавить дополнительный sort -nr
в конце, чтобы отсортировать результаты с наиболее часто встречающимися строками первыми
uniq опции:
-c, --count
prefix lines by the number of occurrences
sort options:
-n, --numeric-sort
compare according to string numerical value
-r, --reverse
reverse the result of comparisons
В конкретном случае, когда строки, которые вы сортируете, являются числами, вам нужно использовать sort -gr
вместо sort -nr
, смотрите комментарий
Вы можете использовать clickhouse -клиентский инструмент для работы с файлами, например, с таблицей sql с одним столбцом в этом случае:
clickhouse-local --query \
"select data, count() from file('access.log', TSV, 'data String') group by data order by count(*) desc limit 10"
Мой краткий эксперимент показывает, что это примерно в 50 раз быстрее, чем
cat access.log | sort | uniq -c | sort -nr | head 10