awk 2文件查找并更新最小/最大值

时间:2013-02-06 18:14:17

标签: awk max min

这是我original problem的第二部分。

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_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中以供进一步研究。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分: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代码中的语句)并打印每个文件的最终结果线。

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