Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对过去30天进行求和的awk脚本_Awk - Fatal编程技术网

对过去30天进行求和的awk脚本

对过去30天进行求和的awk脚本,awk,Awk,我有一个awk代码。但我不知道如何修改它,使之只和过去的30天 我的awk脚本: awk -F";" '{sum+=$3} END{if (sum>1000) print "error=1"; else error="0"}' /tmp/$username 我的意见: 2014-05-19:10:54:36;coolpad;10;0;78.92.146.183;10.8.0.18;185;coolpad;END; 2014-07-19:12:10:42;coolpad;1;0;78.92

我有一个awk代码。但我不知道如何修改它,使之只和过去的30天

我的awk脚本:

awk -F";" '{sum+=$3} END{if (sum>1000) print "error=1"; else error="0"}' /tmp/$username
我的意见:

2014-05-19:10:54:36;coolpad;10;0;78.92.146.183;10.8.0.18;185;coolpad;END;
2014-07-19:12:10:42;coolpad;1;0;78.92.146.183;10.8.0.18;4415;csib;END;
2014-07-19:12:27:35;coolpad;50;0;78.92.146.183;10.8.0.18;748;coolpad;END;
2014-07-19:12:29:08;coolpad;2;0;78.92.146.183;10.8.0.18;88;coolpad;END;
2014-07-19:12:34:34;coolpad;7;0;78.92.146.183;10.8.0.18;291;coolpad;END;
2014-07-19:12:35:03;coolpad;4;0;78.92.146.183;10.8.0.18;26;coolpad;END;
2014-09-19:12:35:16;coolpad;0;0;78.92.146.183;10.8.0.18;12;coolpad;END;
2014-09-19:12:38:21;coolpad;0;0;78.92.146.183;10.8.0.18;60;coolpad;END;
2014-09-19:12:39:20;coolpad;0;0;78.92.146.183;10.8.0.18;58;coolpad;END;
2014-09-19:12:40:35;coolpad;0;0;78.92.146.183;10.8.0.18;74;coolpad;END;
2014-09-19:12:43:08;coolpad;0;0;78.92.146.183;10.8.0.18;118;coolpad;END;
2014-09-19:12:43:23;coolpad;0;0;78.92.146.183;10.8.0.18;14;coolpad;END;
2014-09-19:12:50:54;coolpad;0;0;78.92.146.183;10.8.0.18;349;coolpad;END;
2014-09-19:12:51:42;coolpad;0;0;78.92.146.183;10.8.0.18;47;coolpad;END;
2014-09-19:12:52:22;coolpad;0;0;78.92.146.183;10.8.0.18;39;coolpad;END;
2014-09-19:12:57:03;coolpad;0;0;78.92.146.183;10.8.0.18;281;coolpad;END;
所以数量是第三


请帮帮我,谢谢。

因为30天前我们有
日期

$ date -d"-30 days" "+%Y-%m-%d:%T"
2014-08-20:15:55:42
让我们将该值与
awk
进行比较:

$ awk -F";" -v d="$(date -d"-30 days" "+%Y-%m-%d:%T")" '$1>d {sum+=$3} END{print sum+0}' file
0
解释
  • -F”;“
    将输入字段分隔符设置为
  • -vd=“$(日期-d“-30天”+%Y-%m-%d:%T”)”
    以YYYY-MM-DD:HH:MM:SS格式提供今天的日期-30天
  • $1>d{sum+=$3}
    如果日期大于给定日期,请添加第三列
  • END{print sum+0}
    打印结果。如果未设置
    sum
    ,它将使用
    +0
    技巧返回
    0

请参见匹配本身:

$ awk -F";" -v d="$(date -d"-30 days" "+%Y-%m-%d:%T")" '$1>d' a
2014-09-19:12:35:16;coolpad;0;0;78.92.146.183;10.8.0.18;12;coolpad;END;
2014-09-19:12:38:21;coolpad;0;0;78.92.146.183;10.8.0.18;60;coolpad;END;
2014-09-19:12:39:20;coolpad;0;0;78.92.146.183;10.8.0.18;58;coolpad;END;
2014-09-19:12:40:35;coolpad;0;0;78.92.146.183;10.8.0.18;74;coolpad;END;
2014-09-19:12:43:08;coolpad;0;0;78.92.146.183;10.8.0.18;118;coolpad;END;
2014-09-19:12:43:23;coolpad;0;0;78.92.146.183;10.8.0.18;14;coolpad;END;
2014-09-19:12:50:54;coolpad;0;0;78.92.146.183;10.8.0.18;349;coolpad;END;
2014-09-19:12:51:42;coolpad;0;0;78.92.146.183;10.8.0.18;47;coolpad;END;
2014-09-19:12:52:22;coolpad;0;0;78.92.146.183;10.8.0.18;39;coolpad;END;
2014-09-19:12:57:03;coolpad;0;0;78.92.146.183;10.8.0.18;281;coolpad;END;

不知道为什么,但它不起作用。:/这是完整的剧本:知道这是丑陋的,但工作。(除了30天计算的加号代码)@csib为什么要声明awk语句?因为以后我需要错误的值,如果没有这个值,我就无法从if/while中得到它。@csib
END{if(sum>1000)print“error=1”;否则“error=1”}
没有多大意义。您在
else
中缺少一个
print