それぞれ約12900個と4400個のエントリを含む2つのファイルがあり、それらを組み合わせたいと思います。このファイルには、世界中のすべての陸上気象観測所の位置情報が含まれています。最大のファイルは2週間ごとに更新され、小さなファイルは約1年ごとに更新されます。元のファイルはこちら(http://www.wmo.int/pages/prog/www/ois/volume-a/vola-home.htmそして http://weather.rap.ucar.edu/surface/stations.txt)。私はawk、sed、bashスクリプトを混在させてファイルを操作しました。 Unidataから無料で入手可能なGEMPAKパッケージを使用してデータを視覚化するためにこのファイルを使用しました。 GEMPAKでは最大のファイルを使用できますが、フル機能は使用できません。これには会員登録が必要です。
ファイル1には気象観測所の位置情報が含まれており、最初の6桁はサイト固有の識別子です。さまざまなパラメータ(サイト番号、サイト名、国コード、緯度、経度、サイト高度)は、タブ文字なしの行の位置によってのみ定義されます。
060090 AKRABERG FYR DN 6138 -666 101
060100 VAGA FLOGHAVN DN 6205 -728 88
060110 TORSHAVN DN 6201 -675 55
060120 KIRKJA DN 6231 -631 55
060130 KLAKSVIK HELIPORT DN 6221 -656 75
060160 HORNS REV A DN 5550 786 21
060170 HORNS REV B DN 5558 761 10
060190 SILSTRUP DN 5691 863 0
060210 HANSTHOLM DN 5711 858 0
060220 TYRA OEST DN 5571 480 43
060240 THISTED LUFTHAVN DN 5706 870 8
060290 GROENLANDSHAVNEN DN 5703 1005 0
060300 FLYVESTATION AALBORG DN 5708 985 13
060310 TYLSTRUP DN 5718 995 0
060320 STENHOEJ DN 5736 1033 56
060330 HIRTSHALS DN 5758 995 0
060340 SINDAL FLYVEPLADS DN 5750 1021 28
ファイル2には、ファイル1の一意の識別子と2番目の4桁の識別子(ICAOロケータ)が含まれています。
060100 EKVG
060220 EKGF
060240 EKTS
060300 EKYT
060340 EKSN
060480 EKHS
060540 EKHO
060600 EKKA
060620 EKSV
060660 EKVJ
060700 EKAH
060780 EKAT
結果ファイルが行の最初の4つの場所に4文字の識別子を持つように、これら2つのファイルをリンクしたいと思います。つまり、識別子は4つのスペースを置き換える必要があります。
060090 AKRABERG FYR DN 6138 -666 101
EKVG 060100 VAGA FLOGHAVN DN 6205 -728 88
060110 TORSHAVN DN 6201 -675 55
060120 KIRKJA DN 6231 -631 55
060130 KLAKSVIK HELIPORT DN 6221 -656 75
060160 HORNS REV A DN 5550 786 21
060170 HORNS REV B DN 5558 761 10
060190 SILSTRUP DN 5691 863 0
060210 HANSTHOLM DN 5711 858 0
EKGF 060220 TYRA OEST DN 5571 480 43
EKTS 060240 THISTED LUFTHAVN DN 5706 870 8
060290 GROENLANDSHAVNEN DN 5703 1005 0
EKYT 060300 FLYVESTATION AALBORG DN 5708 985 13
060310 TYLSTRUP DN 5718 995 0
060320 STENHOEJ DN 5736 1033 56
060330 HIRTSHALS DN 5758 995 0
EKSN 060340 SINDAL FLYVEPLADS DN 5750 1021 28
これを行うには、いくつかのbashスクリプトおよび/またはawkスクリプトを使用できますか?
ベストアンサー1
awk 'BEGIN { while(getline < "file2" ) { codes[$1] = $2 } }
{ printf "%4s%s\n", codes[$1], substr($0, 5) }' file1