我有两个文件...
第一个文件(输入1):
1: 6.1703
44 14.7262
46 18.3255
2: 6.1932
44 52.9379
46 4.30653
3: 6.5664
45 2.82839
46 3.1275
4: 8.0923
44 14.1076
第二个文件(输入2):
43 5e-05 4e-05
44 1e-05 2e-05
45 0.00083 1.00083
46 4e-05 7e-05
47 0.00021 6.00021
...我想将第一个文件的元素与第二个文件的两个元素相乘,同时考虑到第一列(两个文件)中的数字。输出应如下所示:
1: 6.1703
44 14.7262*1e-05 14.7262*2e-05
46 18.3255*4e-05 18.3255*7e-05
2: 6.1932
44 52.9379*1e-05 52.9379*2e-05
46 4.30653*4e-05 4.30653*7e-05
3: 6.5664
45 2.82839*0.00083 2.82839*1.00083
46 3.1275*4e-05 3.1275*7e-05
4: 8.0923
44 14.1076**1e-05 14.1076**2e-05
答案1
将第 2 列和第 3 列放入file2
数组中a
,并按第 1 列作为键控。使用数组成员 from和作为乘数,将第 2 列值作为被乘数b
进行循环和打印file1
a
b
awk 'NR == FNR{a[$1]=$2; b[$1]=$3; next}
/:/ || !NF{print; next}
{print $1, $2*a[$1], $2*b[$1]}' file2 file1
1: 6.1703
44 0.000147262 0.000294524
46 0.00073302 0.00128279
2: 6.1932
44 0.000529379 0.00105876
46 0.000172261 0.000301457
3: 6.5664
45 0.00234756 2.83074
46 0.0001251 0.000218925
4: 8.0923
44 0.000141076 0.000282152