有关awk的简单计算

% cat file1  
1 -3 -5 8 7 6  
9 -10 12 2 -4  
11 -13 14  
20 -21 22 19  


 %cat file2 
a  1  250  
b  2  150  
c  3  136  
d  4  167 
e  5  205 
f  6  163 
g  7  148 
h  8  141 
i  9  163 
j  10  264  
k  11  343 
l  12  254  
m  13  165  
n  14  155  
o  15  316  
p  16  212 

file2第一列为编号,第二列为数据id,第三列为数据长度。

file1有多行,每一行数据链的数字对应file1的id(不考虑负号),计算file1前三行的数据链长度。

求教各位大神,用awk怎么写呢?

咋两次 哈哈

看这个 找下思路 https://blog.csdn.net/weixin_30872867/article/details/97206320


有其他问题可以一起探讨 这个会基本使用就行 你要是运维 写的复杂了其它热页看不懂

>> 每一行数据链的数字对应file1的id(不考虑负号)

这个写错了吧,应该是 对应 file2 的 id

awk 代码如下:

#!/usr/bin/awk -f


FNR==NR {
    data_size_dic[$2] = $3
}


FNR<NR {
    if(FNR <=3) {
        for(i=1; i<=NF; i++) {
            if($i > 0) {
                total += data_size_dic[$i];
            }
        }
    }
}


END {
    print total;
}

以上写入脚本(如 c.awk)

$ chmod +x c.awk
$ ./c.awk ./file2 ./file1
1767