2013-02-06 47 views
0

这是我的original problem的第二部分。awk 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)和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_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中以供进一步研究。

在此先感谢您的帮助!

回答

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我得到“一两个文件”,然后我就检查最小值和最大值(if语句中AWK代码)并打印每行的最终结果。

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

+0

谢谢!将与RF模拟器明天一起测试,希望能够大拇指回来:) – user2045090

+0

Jajaja我希望如此。如果您有任何问题,请让我知道;-) – arutaku

+0

有一个小问题:在目标平台上没有粘贴工具。有awk和sed,但是在busybox中没有粘贴。有可能以某种方式替换“粘贴”命令? – user2045090