使用awk基于日期的特定列数据的总和

时间:2018-10-02 15:01:14

标签: awk

我有一个用逗号分隔的数据

LBA0SF004,2018-10-01,4681,4681 
LBA0SF004,2018-10-01,919,919 
LBA0SF004,2018-10-01,3,3 
LBA0SF004,2018-10-01,11453,11453

LBA0SF004,2018-10-02,4681,4681 
LBA0SF004,2018-10-02,1052,1052 
LBA0SF004,2018-10-02,3,3 
LBA0SF004,2018-10-02,8032,8032

我需要awk命令以基于日期的awk命令添加所有第3列和第4列。如果您看到具有不同日期值的同一台服务器可用,我需要像这样的数据

LBA0SF004 2018-10-01 17056 17056 
LBA0SF004 2018-10-02 13768 13768

1 个答案:

答案 0 :(得分:0)

下面的GNU AWK构造应该可以完成您想要的工作。

awk '
BEGIN {
   FS = ","
   OFS = " "
}
{
   if(NF == 4)
   {
      a[$1][$2]["3rd"] += $3;
      a[$1][$2]["4th"] += $4;
   }
}
END {
    for (i in a)
    {
       for (j in a[i])
       {
          print i, j, a[i][j]["3rd"], a[i][j]["4th"];
       }
    }
}
' Input_File.txt

说明:-

FS是输入字段分隔符,在您的情况下为,

OFS是输出字段分隔符,它是

使用第一列,第二列以及第三列和第四列之和创建数组a

最后,打印数组的内容