Aqui está um verso:
awk 'BEGIN {start="no"; nextline="no"}; nextline=="yes" {print; exit}; (start=="yes" && /^next$/) {nextline="yes"}; /^start$/ {start="yes"}' test.txt
E como um script autônomo:
#!/bin/awk -f
BEGIN {start="no"; nextline="no"}
nextline=="yes" {print; exit}
(start=="yes" && /^next$/) {nextline="yes"}
/^start$/ {start="yes"}
Explicação
Isso pode fazer mais sentido lendo primeiro o primeiro ponto, depois lendo o resto ao contrário.
-
BEGIN {start="no"; nextline="no"}: para começar, defina ambas as variáveis como"no"(ou seja, ainda não as encontramos). N.B.nexté uma palavra reservada, então useinextline. -
nextline=="yes" {print; exit}: quando tivermos encontradonextde uma linha anterior, imprima a linha e saia. -
(start=="yes" && /^next$/) {nextline="yes"}: depois de encontrar ostart, se também encontrarmosnextem uma linha, definanextlinepara"yes" -
/^start$/ {start="yes"}: se encontrarmos início, definastartpara"yes".