awk二维数组查询数据

2 篇文章 0 订阅
awk二维数组练习
  • 现有f1,f2两个文档
$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文件的第三列
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值