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 encontradonext
de uma linha anterior, imprima a linha e saia. -
(start=="yes" && /^next$/) {nextline="yes"}
: depois de encontrar ostart
, se também encontrarmosnext
em uma linha, definanextline
para"yes"
-
/^start$/ {start="yes"}
: se encontrarmos início, definastart
para"yes"
.