1

我需要使用 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% 确定这是让我失望的语法。我错过了什么?

这是一个练习,让我为下周到期的作业做准备。

4

1 回答 1

2

问题是你如何增加变量:

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

first = 0

然后你通过它的值增加变量。但是由于该值为零,因此不会增加。

first += first;

基本上在这种情况下,这与说:

first += 0;

或者

first = first + 0;

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

first = first + 1;

或(意思相同)

first++;

反而...

于 2012-09-26T20:49:09.853 回答