Existe uma maneira simples de extrair todos os fragmentos de bar
para foo
com sed:
sed -n '/bar/,/foo/p'
ou com o awk:
awk '/bar/, /foo/'
Se você quiser truncar as partes, é um pouco mais complicado (no awk; no sed, é muito mais complicado). Aqui está uma solução:
awk -vmax_lines_per_chunk=100 '
/bar/ {n=max_lines_per_chunk}
/foo/ {if (n) print; n=0}
n {--n; print}
'