Предполагая, что ваш исходный файл - tmp.txt,
grep -iv '.*this.*this.*this.*this' tmp.txt | grep -i '.*this.*this.*this.*'
Левый grep выводит все строки, у которых нет 4 или более нечувствительных к регистру вхождений «this» в tmp.txt.
Результат передается вправо grep, который выводит все строки с 3 или более вхождениями в результат левого grep.
Обновление: благодаря @Muru, вот лучшая версия этого решения,
grep -Eiv '(.*this){4,}' tmp.txt | grep -Ei '(.*this){3}'
заменить 4 на n + 1 и 3 на n.