Se a entrada é processada linha por linha, então o processamento precisa ser assim:
- se a linha atual for
foo.bar
, armazene-a, esquecendo qualquer linhafoo.bar
anterior que não tenha sido ativada para saída; - se a linha atual for
relevant=yes
, isso ativará a últimafoo.bar
para saída.
Esse tipo de raciocínio é um trabalho para o awk. (Também pode ser feito em sed se você gosta de dor.)
awk '
/^foo\.bar/ { foobar = $0 }
/^relevant=yes$/ {if (foobar != "") {print foobar; foobar = ""}}
'