com awk
:
awk '
NR==FNR{for(i=1;i<=NF;i++){values[$i]};next}
FNR==1{for(i=1;i<=NF;i++){if ($i in values){nf[i]}}}
{sp=""; for(i=1;i<=NF;i++){if (i in nf){printf("%s%s",sp,$i);sp=" "}}}{print ""}
' file2 file1
Isso lê file2
primeiro, salva cada valor em uma matriz values
e processa file1
- na primeira linha verifica quais campos são comuns e salva esses números de campo em outra matriz nf
que é então usada como referência para imprimir seletivamente as colunas correspondentes.