Você não especifica a relação entre cabeçalhos e linhas. Mas se a relação é um número constante de linhas, você pode recuperar os números de linhas com o grep e usar sed para extrair as linhas.
Por exemplo, para obter todas as linhas após o Subheader:
#!/bin/bash
file_in=/tmp/test.txt
file_out=/tmp/file1.txt
LINES='grep -n Subheader $file_in | cut -f1 -d:'
for line in $LINES; do
echo $line
line1=$(($line+1))
sed -n ${line1}p $file_in >> $file_out
done
Editar: você pode executar o script acima em um loop:
#!/bin/bash
n_max=100
file_in=/tmp/test.txt
file_out=/tmp/file
LINES='grep -n Subheader $file_in | cut -f1 -d:'
for n in 'seq 1 $n_max'; do
echo "line $n"
for line in $LINES; do
line_n=$(($line+$n))
sed -n ${line_n}p $file_in >> $file_out$n.txt
done
done
exit 0