根据AWK中的字段值递增var

时间:2012-09-26 20:44:38

标签: awk variable-assignment

我需要使用AWK从文件中打印出某些范围内的连接速率。

以下是数据的一部分:

Mon Sep 15 11:50:08 1997
        User-Name = "edvargas"
        NAS-Identifier = 207.238.228.11
        NAS-Port = 20116
        .
        .
        .
        Ascend-Connect-Progress = 60
        Ascend-Data-Rate = 31200
        .
        .
        .

有5个不同的范围,所以我正在测试最低的两个。 以下是我到目前为止的情况:

BEGIN{first=0; second=0; third=0; fourth=0; fifth=0}
/Ascend-Data-Rate/ && ($3<14400){
        first++;
}
/Assend-Data-Rate/ && ($3>14400) && ($3<19200){
        second++;
}
END{print "first =",first, "second =",second}

这些都没有增加变量。我知道我的输出中第一个范围应该找到6而第二个应该找到2.但是,两者都没有正常工作。

以下是我理解问题的方法:

  Search each record (line) for the field (string) "Ascend-Data-Rate"

    If that is found:  then compare the value of $3 (third field) to the range.

      If that is found: increase the value of the var by one.

我90%肯定这是让我失望的语法。我错过了什么?

这是一项练习练习,为我下周完成的作业做好准备。

1 个答案:

答案 0 :(得分:2)

问题在于如何增加变量:

首先,将变量初始化为零。

first = 0

然后用它的值增加变量。但是当该值为零时,它不会增加。

first += first;

基本上在这种情况下,它与说法相同:

first += 0;

first = first + 0;

只是预感,但我想你可能想要

first = first + 1;

或(意思相同)

first++;

,而不是...