我有一个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;
所以金额是第3位。
请帮帮我,谢谢。
答案 0 :(得分:1)
正如我们在30天前获得date
:
$ 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";"
将输入字段分隔符设置为;
。-v d="$(date -d"-30 days" "+%Y-%m-%d:%T")"
提供今天的日期 - YYYY-MM-DD的30天:HH:MM:SS格式。$1>d {sum+=$3}
如果日期大于给定日期,请添加第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;