LINUX.ORG.RU
решено ФорумAdmin

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

 ,


0

2

Продолжаю осваивать баш - потребовалось найти файл на диске, содержащий максимальное число упоминаний заданного слова. Сразу же сделал:

grep -csr $1 / | sort -nrk 2 -t: | head -n1

Но после написания вспомнил, что оно считает строки в которых было это слово, а мне надо именно количество слов. Может кто подскажет как реализовать?



Последнее исправление: abyz (всего исправлений: 1)

google в курсе, грит что так:

echo «1,2,3» | tr -cd ',' | wc -c

black_13
()
Ответ на: комментарий от anonymous

так оно посчитает строки в выводе, а мне надо результаты к каждому файлу, чтобы потом взять тот, в котором больше всего того слова, что я задал.

abyz
() автор топика
Ответ на: комментарий от abyz

к find можно прикрутить

Вот так например:

root@deb:~# find /usr/share/doc/exim4/ -name "*" -exec grep -l Debian '{}' \; 2>/dev/null |xargs wc -l
    78 /usr/share/doc/exim4/examples/exim-gencert
  1387 /usr/share/doc/exim4/README.Debian.html
   262 /usr/share/doc/exim4/copyright
  1727 итого
root@deb:~#

black_13
()
Ответ на: комментарий от abyz

Ну лол, я что, помню через час о чём каждый тред? Запускай греп для каждого файла, сохраняй результаты и тд.

anonymous
()
Ответ на: комментарий от E

Блин, как неудобно незвёздочным править сообщения

Можно и без первого sort, по идее, выдача grep уже отсортирована будет.

E ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.