awk比较2个文件,找到最小/最大值并存储

awk比较2个文件,找到最小/最大值并存储,awk,Awk,我有3个文件: 文件_1是静态的,内容不变,值可以是-160到0: xdslcmd: ADSL driver and PHY status Status: Idle Retrain Reason: 0 Tone number QLN 0 0.0000 1 0.0000 2 0.0000 3 0.0000 4 0.0000 5

我有3个文件:

文件_1是静态的,内容不变,值可以是-160到0:

xdslcmd: ADSL driver and PHY status Status: Idle Retrain Reason: 0 Tone number QLN 0 0.0000 1 0.0000 2 0.0000 3 0.0000 4 0.0000 5 0.0000 6 0.0000 7 -160.0000 8 -119.2000 9 -128.6700 10 -113.1200 11 -93.1000 12 -130.0000 13 -120.0000 14 -110.0000 15 -100.0000 16 -90.0000 17 -100.0000 18 -110.0000 19 -120.0000 20 -130.0000 21 -140.0000 22 -110.0000 23 0.0000 24 0.0000 xdslcmd:ADSL驱动程序和PHY状态 状态:空闲 再培训原因:0 音号 0 0.0000 1 0.0000 2 0.0000 3 0.0000 4 0.0000 5 0.0000 6 0.0000 7 -160.0000 8 -119.2000 9 -128.6700 10 -113.1200 11 -93.1000 12 -130.0000 13 -120.0000 14 -110.0000 15 -100.0000 16 -90.0000 17 -100.0000 18 -110.0000 19 -120.0000 20 -130.0000 21 -140.0000 22 -110.0000 23 0.0000 24 0.0000 文件_2看起来像文件_1,但值每次都在更改(值可以是-160到0)

xdslcmd:ADSL驱动程序和PHY状态 状态:空闲 再培训原因:0 音号 0 0.0000 1 0.0000 2 0.0000 3 0.0000 4 0.0000 5 0.0000 6 0.0000 7 -160.0000 8 -159.2000 9 -148.6700 10 -123.1200 11 -83.1000 12 -100.0000 13 -100.0000 14 -100.0000 15 -80.0000 16 -80.0000 17 -110.0000 18 -120.0000 19 -130.0000 20 -140.0000 21 -150.0000 22 -100.0000 23 0.0000 24 0.0000 我想比较文件2$2和文件1$2,并在文件3中存储它们之间的差异

Exmaple:

File_1 contains: 18 -120.0000 File_2 contains: 18 -140.0000 Expected output: 18 -20 0 文件_1包含:18-120.0000 文件_2包含:18-140.0000 预期产出:18-20 0 文件_1包含基本值(视为“0”) 文件_2每次都会更改,并保存实际值。 预期输出是测量过程中与基准值的最小/最大差值

在相同的音调下,QLN在测量过程中可能会越来越高或越来越低: File_1 contains: 18 -120.0000 File_2 contains: 18 -140.0000 File_2 contains: 18 -100.0000 (in a later query) Expected output: 18 -20 +20 文件_1包含:18-120.0000 文件_2包含:18-140.0000 文件_2包含:18-100.0000(在后面的查询中) 预期产出:18-20+20

文件1和文件2已排序,前5行不相关。

awk'FNR
awk 'FNR<6{next}NR==FNR{a[$1]=$2;next}{printf "%s\t%10f\n",$1,$2-a[$1]}' f1 f2
0     0.000000
1     0.000000
2     0.000000
3     0.000000
4     0.000000
5     0.000000
6     0.000000
7     0.000000
8   -40.000000
9   -20.000000
10  -10.000000
11   10.000000
12   30.000000
13   20.000000
14   10.000000
15   20.000000
16   10.000000
17  -10.000000
18  -10.000000
19  -10.000000
20  -10.000000
21  -10.000000
22   10.000000
23    0.000000
24    0.000000
awk 'FNR<6{next}NR==FNR{a[$1]=$2;next}{printf "%s\t%10f\n",$1,$2-a[$1]}' f1 f2
0     0.000000
1     0.000000
2     0.000000
3     0.000000
4     0.000000
5     0.000000
6     0.000000
7     0.000000
8   -40.000000
9   -20.000000
10  -10.000000
11   10.000000
12   30.000000
13   20.000000
14   10.000000
15   20.000000
16   10.000000
17  -10.000000
18  -10.000000
19  -10.000000
20  -10.000000
21  -10.000000
22   10.000000
23    0.000000
24    0.000000
awk 'FNR<6{next}NR==FNR{a[$1]=$2;next}d=$2-a[$1]{printf "%s\t%10f\n",$1,d}' f1 f2
8   -40.000000
9   -20.000000
10  -10.000000
11   10.000000
12   30.000000
13   20.000000
14   10.000000
15   20.000000
16   10.000000
17  -10.000000
18  -10.000000
19  -10.000000
20  -10.000000
21  -10.000000
22   10.000000