linux awk 二维数组,awk的二维数组

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++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++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文件的第三列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值