Você colocou a lógica de restrição de linha no bloco "BEGIN", que é executado antes de awk
ler qualquer dado. Mova essa lógica para o loop principal:
NR >= 7 && NR <= 13 && /word/ { print }
$0
é o argumento padrão print
, se nenhum for dado ... ou, ainda mais curto, como
NR >= 7 && NR <= 13 && /word/
desde que {print}
seja a ação padrão, se nenhuma for especificada.
O corpo principal de um script awk
é da forma "padrão" "ação"; você quer que o padrão prefixe a ação que você deseja. Aqui, o padrão requer que os três testes sejam verdadeiros e a ação seja imprimir a linha. Colocar o print
em uma linha separada significa que não há "ação" ao "passar" os testes e não há "padrão" para imprimir todas as linhas - resultando na impressão de todas as linhas.