使用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版本