Tente isto:
awk '
NR==FNR { a[$1] = $2 ; next }
c && c-- && ($1 in a) { print a[$1] }
/goodbye/ { c = 1 }
' File1 File2
Como isso funciona:
NR==FNR
é uma condição que só é verdadeira ao ler o primeiro arquivo; aqui nós armazenamos em um mapa o segundo campo sob o valor da chave definido pelo primeiro campo. Com a instrução next
, nenhuma outra das condições subsequentes será verificada para o primeiro arquivo de dados.
Assim, o restante das condições será verificado apenas para o segundo arquivo. Queremos imprimir o valor mapeado do primeiro arquivo (dependendo da chave do segundo arquivo) se certas condições forem verdadeiras; um sinalizador c
foi definido (em caso afirmativo, esse sinalizador será decrementado como 0) e o valor da chave atual já deverá existir como chave (do primeiro arquivo) no mapa a
. Finalmente, o sinalizador c
será definido se a condição for verdadeira de acordo com o padrão dado.