Я пытаюсь подсчитать несколько вхождений некоторого текста для каждого файла в каталоге. Следующий сценарий близок к тому, что я хочу, но это не в счет нескольких вхождений на той же строке:Подсчитайте несколько вхождений некоторого текста для каждого файла в каталоге
grep -rc 'blah' /some/path --include \*.txt
Например, данные два файла:
foo.txt
blah, hey blah
some more text
bar.txt
something blah
выше сценарий производит:
foo.txt:1
bar.txt:1
Но выход я ищу это *:
foo.txt:2
bar.txt:1
Я знаю, что общее число вхождений можно найти в одном файле с помощью Grep, а затем конвейеру результатов Количество слов:
grep -oh 'blah' foo.txt|wc -l
Как это сделать для нескольких файлов, чтобы добиться вывода, как в моем примере * выше?
Update
Лучшее решение, которое я мог придумать выглядит следующим образом:
find /some/path -name '*.txt'|awk '{print "echo -n '\''"
$0 "\: '\'' && grep -oh '\''blah'\'' " $0 "|wc -l"}'|bash