Você pode explicar com mais clareza exatamente o que você está tentando fazer?
Parece que você está tentando imprimir os valores x, y e z
( $4
, $5
e $6
) das próximas seis linhas
depois de uma linha que contém um literal z
seguido por um ~
.
Mas isso não faz muito sentido - a menos que você tenha um padrão de repetição
de um cabeçalho, cinco linhas de dados, outro cabeçalho, outras cinco linhas de dados,
etc - e, se for esse o caso, você realmente precisa explicar isso.
E se é isso que você está tentando fazer, por que você está fazendo isso?
com for(i=-2; i<=3; i++)
em vez de for(i=1; i<=6; i++)
.
E isso não é uma boa maneira de usar getline
.
Se eu entender corretamente seu objetivo, tudo que você precisa é
awk 'NF==7 {print $4, $5, $6}' filename
Isso imprimirá os 4º, 5º e 6º campos (x, ye z) de cada linha que tem sete campos e ignora todo o resto.