grep '\(.*BZBZB\)\{5\}'
будет выполнено 5 раз, но это будет соответствовать всему, что появляется 5 или более раз, потому что grep проверяет, совпадает ли какая-либо подстрока строки.Поскольку у grep нет способа выполнить отрицательное сопоставление строк в своих регулярных выражениях (только символы), это нельзя сделать с помощью одной команды, если, например, вы не знаете, что символы, используемые в сопоставляемой строке, не являютсяиспользуется в другом месте.
Однако вы можете сделать это с помощью двух команд grep:
cat temp.txt | grep '\(.*BZBZB\)\{5\}' | grep -v '\(.*BZBZB\)\{6\}'
вернет строки, в которых BZBZB появляется ровно 5 раз.(В основном, это делает положительную проверку в течение 5 или более раз, а затем отрицательную проверку в течение шести или более раз.)