连接具有唯一标识符的两个文件

斯塔凡·舍洛夫(Staffan Scherloff)

我要加入两个文件,分别有大约12900和4400个条目。这些文件包含全球所有陆基气象观测站的位置信息。最大的文件每两周更新一次,较小的文件大约一年一次。原始文件可以在这里找到(http://www.wmo.int/pages/prog/www/ois/volume-a/vola-home.htmhttp://weather.rap.ucar.edu/surface/ station.txt)。我已经使用一些混合的awk,sed和bash脚本来操纵我的文件。我使用GEMPAK软件包使用这些文件来可视化数据,该软件包可从Unidata免费获得。最大的文件将与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中的唯一标识符和第二个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个字符的标识符,即该标识符应替换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脚本来完成此任务?

用户名
awk 'BEGIN { while(getline < "file2" ) { codes[$1] = $2 } }
     { printf "%4s%s\n", codes[$1], substr($0, 5) }' file1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从两个表构建表,其中一个具有无用的唯一标识符(WordPress wp_usermeta表)

当存储具有相同唯一标识符(“用户名”)的两个域模型(用户)时,克服不一致的最佳方法

匹配来自两个表的人口统计信息,没有唯一标识符

没有唯一标识符的内连接

有两个具有相同标识符的导入打字稿

R 具有两个标识符的事件的重叠期

添加两个具有相同标识符的枚举

具有两个自定义单元格(多个标识符)的UITableView

如何重塑具有两个变量作为标识符的data.frame?

SQL-需要基于两个整数列的其他唯一标识符列的解决方案

合并两个表,包括多次出现的列标识符和唯一行

为什么NSCalendar有两个具有相似参数类型的init方法可以接受日历标识符常量之一?

在RequireJS路径中具有一个标识符的多个文件

安装Xcode 5.1后出现错误:同一层次结构中的两个视图具有相同的还原标识符

r 通过 ddply 从具有两个标识符的数据框中删除异常值

当有两个i标识符和一个t时间时,填充面板

Tomcat中连接的唯一标识符

没有连接到iOS和Android的蓝牙设备是否存在唯一标识符?

根据两个标识符将两行合并为一

R-如何过滤出具有唯一标识符的重复数据?

根据熊猫中其他列的值添加具有唯一标识符的列

将具有唯一标识符的标签插入XML

搜索具有多个标识符的列的唯一记录

两个应用程序可以具有相同的捆绑包名称,但是具有不同的捆绑包标识符吗?

如何为具有唯一键的一组记录生成唯一标识符?

使用两个cpp文件时使用未声明的标识符

c#为文件创建唯一标识符

格子图案和 QFX 文件中的交易是否有共同的唯一标识符?

通过合并ID和日期范围在R中没有唯一标识符的两个数据框来创建事件