这是我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中以供进一步研究。
提前感谢您的帮助!
答案 0 :(得分:1)
我使用paste
和AWK
组合得到它。这是一行:
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
。