Você poderia fazer:
code=$(
awk '
NR == 3 {
for (i=1; i<=NF; i++)
if ($i > 5) { printf "%s", sep "$" i; sep="," }
exit sep == ""
}' file
) &&
awk "{print $code}" file
Isso é chamada awk duas vezes no mesmo arquivo. O primeiro lê a terceira linha para construir o código para a segunda invocação awk . Ele sai depois de processar a terceira linha, portanto, não lerá todo o arquivo completamente. Ele gera algo como $5,$6,$7 , então a próxima invocação de awk se torna:
awk '{print $5,$6,$7}' file