一意の識別子を使用した2つのファイルの関連付け

一意の識別子を使用した2つのファイルの関連付け

それぞれ約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

おすすめ記事