0

これは、私の元の問題の 2 番目の部分です。

File_1 は毎秒ポーリングされ、$2 は常に変化しています。

0 0.00
1 0.00
2 0.00
3 0.00
4 0.00
5 0.00
6 0.00
7 0.00
8 -40.00
9 -20.00
10 -10.00
11 10.00
12 30.00
13 20.00
14 10.00
15 20.00
16 10.00
17 -10.00
18 -10.00
19 -10.00
20 -10.00
21 -10.00
22 10.00
23 0.00

File_2 は、最小値 ($1) と最大値 ($2) を保存して更新する場所です。元の File_2 は空です:

0 0.0000 0.0000
1 0.0000 0.0000
2 0.0000 0.0000
3 0.0000 0.0000
4 0.0000 0.0000
5 0.0000 0.0000
6 0.0000 0.0000
7 0.0000 0.0000
8 0.0000 0.0000
9 0.0000 0.0000
10 0.0000 0.0000
11 0.0000 0.0000
12 0.0000 0.0000
13 0.0000 0.0000
14 0.0000 0.0000
15 0.0000 0.0000
16 0.0000 0.0000
17 0.0000 0.0000
18 0.0000 0.0000
19 0.0000 0.0000
20 0.0000 0.0000
21 0.0000 0.0000
22 0.0000 0.0000
23 0.0000 0.0000

絶対的な最小値と最大値を File_2 に保存し、新しくポーリングされた File_1 $1 に高い/低い値が含まれている場合はそれらを更新したいと考えています。つまり、File_1 $1 を File_2 $1 および $2 でチェックする必要があり、File_1 $1 が File_2 $1 よりも小さいか File_2 $2 よりも大きい場合、File_2 $1 または File_2 $2 を更新する必要があります。すべてのファイルがソートされます。

説明:

これは無線周波数ノイズアナライザーになります。すべての行はサブチャネルであり、入力 RF ノイズの上昇または下降が測定され、毎秒読み取られます (File_1 に保存されます)。目標は、すべてのサブチャネル (すべての行) の測定中に絶対最小値と最大値 (つまり、ノイズ変動) を取得し、それをさらに調査するために File_2 に保存することです。

よろしくお願いします。

4

1 に答える 1

1

組み合わせて使ってみましたpasteAWKこれは行です:

paste File_1 File_2 | awk '{min = $4; if ($2 < $4){min = $2;} max = $5; if ($2 > $5){max = $2;}print $1"\t"min"\t"max;}' -

出力を保存したい場所にリダイレクトできます。以下の説明を参照してください。

出力は次のとおりです。

0   0.0000  0.0000
1   0.0000  0.0000
2   0.0000  0.0000
3   0.0000  0.0000
4   0.0000  0.0000
5   0.0000  0.0000
6   0.0000  0.0000
7   0.0000  0.0000
8   -40.00  0.0000
9   -20.00  0.0000
10  -10.00  0.0000
11  0.0000  10.00
12  0.0000  30.00
13  0.0000  20.00
14  0.0000  10.00
15  0.0000  20.00
16  0.0000  10.00
17  -10.00  0.0000
18  -10.00  0.0000
19  -10.00  0.0000
20  -10.00  0.0000
21  -10.00  0.0000
22  0.0000  10.00
23  0.0000  0.0000

説明:

まず、paste「両方のファイルを 1 つに」を使用して、最小値と最大値 (AWKコード内の if ステートメント) をチェックし、各行の最終結果を出力します。

PS:paste File_1 File_2使い方がわからない場合は試してみてください。

于 2013-02-06T19:03:46.033 に答える