我需要使用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%肯定这是让我失望的语法。我错过了什么?
这是一项练习练习,为我下周完成的作业做好准备。
答案 0 :(得分:2)
问题在于如何增加变量:
首先,将变量初始化为零。
first = 0
然后用它的值增加变量。但是当该值为零时,它不会增加。
first += first;
基本上在这种情况下,它与说法相同:
first += 0;
或
first = first + 0;
只是预感,但我想你可能想要
first = first + 1;
或(意思相同)
first++;
,而不是...