awk脚本,总结了最近30天

时间:2014-09-19 13:43:01

标签: 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.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位。

请帮帮我,谢谢。

1 个答案:

答案 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;