0

这是我原来的问题的第二部分。

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 是我要存储 min ($1) 和 max ($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_2 $1 和 $2 检查 File_1 $1,如果 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我得到“两个文件合一”,然后我只检查最小值和最大值(AWK代码中的 if 语句),然后打印每一行的最终结果。

PS:paste File_1 File_2如果您不知道它是如何工作的,请尝试。

于 2013-02-06T19:03:46.033 回答