-1

私は3つのファイルを持っています:

File_1は静的であり、コンテンツは変更されていません。値は-160から0になります。

xdslcmd:ADSLドライバーとPHYステータス
ステータス:アイドル
再訓練の理由:0

声調番号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

File_2はFile_1に似ていますが、値は毎回変化します(値は-160から0にすることができます)

xdslcmd:ADSLドライバーとPHYステータス
ステータス:アイドル
再訓練の理由:0

声調番号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 -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

File_2$2とFile_1$2を比較し、それらの違いをinfFile_3に保存したい

例:

File_1に含まれるもの:18 -120.0000
File_2に含まれるもの:18 -140.0000
期待される出力:18 -20 0

File_1には基本値(「0」と見なされます)が含まれます。File_2は毎回変更され、実際の値を保持します。期待される出力は、測定中のベース値からの最小/最大差です。

同じトーンで、測定中にQLNが上下する可能性があります。

File_1に含まれるもの:18 -120.0000
File_2に含まれるもの:18 -140.0000
File_2に含まれるもの:18 -100.0000(後のクエリで)
期待される出力:18 -20 +20

File_1とFile_2はソートされており、最初の5行は関係ありません。

4

1 に答える 1

1
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

の使用はprintf、出力の形式を、たとえば小数点以下2桁までに変更できることを意味しますprintf "%s\t%10.2f\n",$1,d

于 2013-02-06T15:28:04.787 に答える