com um único grep
:
grep -vxE '.{0,99}|([^i]|i[^f])*i*' <in >out
que seleciona apenas linhas que não podem ser descritas da cabeça à cauda com qualquer uma das instruções. e, portanto, qualquer linha que possa ser descrita como consistindo de 0 a 99 caracteres não será selecionada e, da mesma forma, qualquer linha que corresponda a mais de 99 caracteres e ainda não contenha pelo menos uma única se também não pode ser selecionado.
printf '^%-100b$\n' 'if\nif' 'hey if' i if |
grep -nvxE '.{0,99}|([^i]|i[^f])*i*'
3:^hey if $
5:^if $
talvez seja melhor usar apenas dois grep
s.