Получить количество вхождений каждого слова в документе

Просмотрите /var/log/dpkg.logв своей любимой программе просмотра текста.

0
12.08.2020, 18:27
2 ответа

Попробуйте это:

grep -o '\w*' doc.txt | sort | uniq -c | sort -nr
  • -oПечатать каждое совпадение вместо совпадающих строк
  • \w*Совпадение символов слова
  • sortсортируйте спички перед отправкой в ​​uniq.
  • uniq -cвывести уникальные строки и количество вхождений-c
  • sort -nrОбратная сортировка по количеству вхождений.

Выход:

  2 word
  1 third
  1 second
  1 really

Альтернатива:

Используйте awkдля точного вывода:

$ grep -o '\w*' doc.txt \
| awk '{seen[$0]++} END{for(s in seen){print s,seen[s]}}' \
| sort -k2r

word 2
really 1
second 1
third 1
3
18.03.2021, 23:12
perl -lnE '
  $count{$_}++ for /[[:alpha:]]+/g;
  END {
    say "@$_" for
      sort {$b->[1] <=> $a->[1] || $a->[0] cmp $b->[0]}
      map {[$_, $count{$_}]}
      keys %count
  }
' doc.txt

Это потребует гораздо больше памяти, чем первоначальное решение pLumo.

0
18.03.2021, 23:13

Теги

Похожие вопросы