Aqui está uma solução awk
que faz de tudo para impedir a impressão da segunda a
:
awk '$1 == "a" { if (!head) print; n=head=1; next } $1 !~ /^[0-9]/ { n=0 } n' ascii_file
Substitua "a"
por "b"
para obter esses resultados, etc.
Saída:
a
1 2 3
1223
4 5
Se você quisesse um loop, poderia fazer assim:
for letter in a b c; do
echo
awk -v letter="$letter" '$1 == letter { if (!head) print; n=head=1; next } $1 !~ /^[0-9]/ { n=0 } n' /tmp/a
done
que teria essa saída:
a
1 2 3
1223
4 5
b
1 2 3 5
3344
1223
c
1 2 34
123
(Observe a linha echo
. Isso delimita entre os hits de cada consulta. Estruturei essa resposta para permitir que você consultasse por carta, que é o meu entendimento da pergunta.)