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

使用awk基于日期的特定列数据的总和,awk,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

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

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命令来添加所有第3列和第4列,使用基于日期的awk命令。如果您看到相同的服务器具有不同的日期值,我需要这样的数据

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

下面的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


最后,打印数组的内容

对不起,这不是StackOverflow的工作方式。形式为“我想做X,请给我提示和/或示例代码”的问题被认为是离题的。请访问并阅读,尤其是在kvantour编辑之前阅读,就像你从其他地方复制并粘贴了一些东西一样(可能是你自己以前的问题,现在已经删除了)?我建议不要这样做。感谢您以正确的方式编辑它。请尝试以下
awk-F'{a[$1ofs$2]+=$3;b[$1ofs$2]+=$4}{END{for(I in a)print I,a[I],b[I]}输入文件
您应该提到的可能的副本需要GNU awk才能实现真正的多维数组。另外
a[$1][$2][$3][$3]=a[$1][$2][$3][$3
=
a[$1][$2][“3rd”]+=$3
。如前所述,它只适用于GNU awk(GAWK)。通常awk命令在我们的环境中可以工作,但这显示语法错误,是否有其他命令您可以尝试问题注释中提到的解决方案。顺便说一句,您得到的语法错误是什么?您还可以运行这个
awk-W版本
并检查您使用的是哪个awk。GNU awk 3.1.7,这是我们正在使用的awk版本