Поскольку у вас есть пара имен, регулярные выражения - это то, что вам нужно.Сначала я подумал, что это так же просто, как просто рассчитывать grep на регулярное выражение joe или tom, но подумал, что это не учитывает сценарий, когда tom и joe находятся в одной строке (или tom and tom в этом отношении),
test.txt:
tom is really really cool! joe for the win!
tom is actually lame.
$ grep -c '\<\(tom\|joe\)\>' test.txt
2
Как видно из файла test.txt, 2 - неправильный ответ, поэтому нам нужно было учесть, что имена находятся в одной строке.
Затем я использовал grep -o, чтобы показать только часть совпадающей строки, которая соответствует шаблону, где он дал правильные соответствия шаблону tom или joe в файле.Затем я передал результаты в число строк в wc для количества строк.
$ grep -o '\(joe\|tom\)' test.txt|wc -l
3
3 ... правильный ответ!Надеюсь, это поможет