分享

有6亿个IP地址打印出对应的城市名,改怎么弄的

howtodown 发表于 2014-4-11 15:54:46 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 5339
本帖最后由 pig2 于 2014-4-11 16:28 编辑
一个文件200M,里面每行含有ip,城市,位置的信息,如
155.120.123.2 北京 北京大学
155.120.123.1 北京 清华大学
123.111.12.3 天津南开大学.。。

现在有6亿个IP地址打印出对应的城市名,改怎么弄的?求指导
是两个文件  6亿IP是在另一文件


已有(1)人评论

跳转到指定楼层
pig2 发表于 2014-4-11 15:56:03
下面内容,你可以借鉴一下:
*对两个文件的处理
----------
有两个文件,如下所示,这两个文件格式都是一样的。先把文件2的第五列删除,然后用文件2的第一列减去文件一的第一列,把所得的结果对应的贴到原来第五列的位置,请问这个脚本该怎么编写?
file1:
50.481  64.634  40.573  1.00  0.00
51.877  65.004  40.226  1.00  0.00
52.258  64.681  39.113  1.00  0.00
52.418  65.846  40.925  1.00  0.00
49.515  65.641  40.554  1.00  0.00
49.802  66.666  40.358  1.00  0.00
48.176  65.344  40.766  1.00  0.00
47.428  66.127  40.732  1.00  0.00
51.087  62.165  40.940  1.00  0.00
52.289  62.334  40.897  1.00  0.00
file2:
48.420  62.001  41.252  1.00  0.00
45.555  61.598  41.361  1.00  0.00
45.815  61.402  40.325  1.00  0.00
44.873  60.641  42.111  1.00  0.00
44.617  59.688  41.648  1.00  0.00
44.500  60.911  43.433  1.00  0.00
43.691  59.887  44.228  1.00  0.00
43.980  58.629  43.859  1.00  0.00
42.372  60.069  44.032  1.00  0.00
43.914  59.977  45.551  1.00  0.00

--答--
awk 'NR==FNR{a[NR]=$1}NR!=FNR{$5=a[FNR]-$1;print}' file2 file1

说明:
当NR==FNR时,是第一个文件,到了第二个文件时FNR会从0开始计数,而NR却继续在原来的基础上自增。
先把第一个文件中要使用的内容保存到一个数组中,然后在处理第二个文件时才使用。
这里包含了很好的处理多个文件的方法,值得借鉴。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条