对 UNIX 中模式之间存在的第四个字段数据求和

对 UNIX 中模式之间存在的第四个字段数据求和

假设我的数据是:

*dnet *1234 1.2 
1 port *12 2.3  
3 port1 *34 0.2 
7 *15 0.1 
*dnet *234 0.2 
2 *12 0.1 
4 *123 *234 1.2

字段由空格分隔。

在此,我想获得每个 中存在的第四个数据字段的总和*dnet。有些字段有第四个字段数据,有些则没有。我想要每个单独的第四个字段总和值*dnet

我尝试使用awk但无法获得。如果有人帮忙,将不胜感激。

上面的输出看起来像

*dnet *1234 1.2 2.5

*dnet *234 0.2 1.2

答案1

$ awk '/dnet/{if (NR>1) print dnet, sum+0; dnet=$0; sum=0} {sum+=$4} END{print dnet, sum+0}' file
*dnet *1234 1.2  2.5
*dnet *234 0.2  1.2

相关内容