(expandido do comentário)
awk
tem a capacidade de selecionar 'intervalos' de linhas que correspondam perfeitamente a essa necessidade, como descrito no manual do GNU-awk (gawk) . (Esse recurso funciona em outros awk
s, mas o manual gawk
é fácil de vincular.)
awk '/line 2A/,0'
imprime linhas iniciando com a primeira que corresponde a line 2A
e continua até o final da entrada porque 0
é uma condição que nunca é verdadeira.
awk '/line 2A/,/A/&&!/line 2A/'
inicia a impressão com uma linha que corresponde a line 2A
e pára após uma linha que corresponde a A
mas NÃO line 2A
(e, portanto, não pode ser a mesma linha que a linha de início). Ele será iniciado novamente em subseqüente line 2A
e assim por diante; se você quiser evitar que haja maneiras um pouco mais complicadas de fazer isso.
Se as linhas de parada sempre tiverem algum caractere diferente de 2
antes do A
, isso pode ser simplificado para awk '/line 2A/,/[^2]A/'
, que pára após uma linha que corresponde a qualquer caractere diferente de 2, seguido por A. Você pode querer um variação disso, por exemplo para parar em qualquer dígito único A diferente de 2A, mas não outro Como WHAT
; para isso, a condição de parada pode ser ,/line [013-9]A/
.