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つの異なる範囲があるので、私は最も低い2つでテストしています。これが私がこれまでに持っているものです:

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番目の範囲で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 に答える