$cat f2 5 6 7 8 9 10 A 0.7 0.8 0.9 1 1.1 1.2 C 0.22 0.34 0.46 0.58 0.7 0.82 D -0.26 -0.12 0.02 0.16 0.3 0.44 E -0.74 -0.58 -0.42 -0.26 -0.1 0.06 F -1.22 -1.04 -0.86 -0.68 -0.5 -0.32 G -1.7 -1.5 -1.3 -1.1 -0.9 -0.7 H -2.18 -1.96 -1.74 -1.52 -1.3 -1.08 I -2.66 -2.42 -2.18 -1.94 -1.7 -1.46 K -3.14 -2.88 -2.62 -2.36 -2.1 -1.84 L -3.62 -3.34 -3.06 -2.78 -2.5 -2.22 M -4.1 -3.8 -3.5 -3.2 -2.9 -2.6 $cat f1 5 A 8 C 10 G 11 D 12 F 13 H
根據f2文件的第一行第一列爲序號,求出f1中各對應的結果,打印在第三列數組
[root@Web awk]# awk 'FNR==NR{for(i=0;i++<NF;){if(NR==1)a[i+1]=$i;if(NR>1)b[a[i],$1]=$i};next}{print $0,b[$1,$2]}' f2 f1 5 A 0.7 8 C 0.58 10 G -0.7 11 D 12 F 13 H
awk 'FNR==NR{for(i=0;i++<NF;){if(NR==1)a[i+1]=$i;if(NR>1)b[a[i],$1]=$i};next}{print $0,b[$1,$2]}' f2 f1
對每一行進行循環,對第一行進行對應數組處理 a[1]=$0,a[2]=5,a[3]=6,a[4]=7,a[5]=8,a[6]=9,a[7]=10 而後下次循環跳過第一列 b[a[1],$1]=$1,b[a[2],$1]=$2,b[a[3],$1]=$3,b[a[4],$1]=$4,b[a[5],$1]=$5,b[a[6],$1]=$6,b[a[7],$1]=$7 這樣就造成了咱們須要的二維數組 而後循環整個f2文件 最後對f1文件獲取,將結果打印在f1文件的第三列