211.82.96.2 北京 海淀区
211.82.96.3 北京 朝阳区
211.82.96.5 南阳 卧龙区
10.1.18.7 郑州 新郑10.1.18.7
211.82.96.5
使用join命令。
在使用join前,需要将两个文件按照相同的规则进行排序,这样才能使用join达到期望的效果
#!/bin/bash
filenameBeforSort1="ip_city_location.file"
filenameBeforSort2="ip.file"
sortedFile1="ip_city_location.sort"
sortedFile2="ip.sort"
sort $filenameBeforSort1 > $sortedFile1
sort $filenameBeforSort2 > $sortedFile2
join $sortedFile1 $sortedFile2 | awk '{print $1,$2}'10.1.18.7 郑州
211.82.96.5 南阳211.82.96.2 北京 海淀区
211.82.96.3 北京 朝阳区
211.82.96.5 南阳 卧龙区
211.82.96.3 北京 朝阳区
10.1.18.7 郑州 新郑
211.82.96.2 北京 海淀区
10.1.18.7 郑州 新郑10.1.18.7
211.82.96.5
10.1.18.7
211.82.96.5#!/bin/bash
filenameBeforSort1="ip_city_location.file"
filenameBeforSort2="ip.file"
sortedFile1="ip_city_location.sort"
sortedFile2="ip.sort"
sort $filenameBeforSort1 | uniq | sort > $sortedFile1 #第二个sort命令不写效果也一样,但是个人认为加上更保险一些,不过数据量大时也许会影响效率
sort $filenameBeforSort2 |uniq | sort > $sortedFile2 #第二个sort命令不写效果也一样,但是个人认为加上更保险一些,不过数据量大时也许会影响效率
join $sortedFile1 $sortedFile2 | awk '{print $1,$2}'10.1.18.7 郑州
211.82.96.5 南阳#!/bin/bash
filenameBeforSort1="ip_city_location.file"
filenameBeforSort2="ip.file"
sortedFile1="ip_city_location.sort"
sortedFile2="ip.sort"
sort $filenameBeforSort1 > $sortedFile1
sort $filenameBeforSort2 > $sortedFile2
join $sortedFile1 $sortedFile2 | awk '{print $1,$2}' | sort | uniq #在做uniq命令之前是必须先执行sort命令的10.1.18.7 郑州
211.82.96.5 南阳
本文介绍如何利用Unix命令join、sort及uniq处理IP地址及其地理位置信息,实现从IP文件中提取并显示每个IP对应的城市名,同时解决了数据重复的问题。

被折叠的 条评论
为什么被折叠?



