【发布时间】:2017-10-31 22:26:17
【问题描述】:
我有两个文件:
- File1 包含参数中的纬度、经度、高度和百分比变化
- 文件 2 包含高度和平均绝对参数。
文件1
89.0 -179.0 40.0 -1.9290
89.0 -179.0 50.0 -1.7720
89.0 -179.0 70.0 -0.8970
89.0 -179.0 90.0 -0.4020
87.0 -179.0 40.0 -2.6490
87.0 -179.0 50.0 -2.4850
87.0 -179.0 70.0 -1.5370
87.0 -179.0 90.0 -0.7770
85.0 -179.0 40.0 -2.0090
85.0 -179.0 50.0 -1.8270
85.0 -179.0 70.0 -1.2930
85.0 -179.0 90.0 -0.5480
83.0 -179.0 40.0 -0.6930
83.0 -179.0 50.0 -0.4000
83.0 -179.0 70.0 -0.1050
83.0 -179.0 90.0 0.1200
81.0 -179.0 40.0 -0.3000
81.0 -179.0 50.0 -0.0780
81.0 -179.0 70.0 0.1760
81.0 -179.0 90.0 0.1430
文件2
40.0000000 4.3764738518518698
50.0000000 4.3796847037037017
70.0000000 4.3780389444444472
90.0000000 4.3688861728394963
现在,我需要创建一个包含纬度、经度、高度和绝对参数的文件。基本上我需要将 p 更改为 p(1+a/100),其中 p 是平均参数,a 是百分比变化。生成的文件将如下所示:
89.0 -179.0 40.0 4.2920516
我可以使用 do while 循环或任何其他循环来执行此操作,但对于大文件来说很耗时。我相信有一个我无法弄清楚的单行 awk。
我试过了
awk 'FNR==NR{a[NR]=$2;next}{$4=a[FNR]*(1+$4/100)}1' file2 file1
但是只有当两个文件中的高度顺序相同并且两个文件的行数相同时,这个才有效。
我想在第一个文件中搜索海拔高度,取相应的平均参数并将其用作第二个文件的变量。能做到吗?
【问题讨论】: