Chinaunix
标题:
关于ip日志统计的问题~~~~
[打印本页]
作者:
jy01768678
时间:
2013-01-08 23:16
标题:
关于ip日志统计的问题~~~~
比如ip.txt 如下 第一列为ip地址 第二列为访问次数
1.2.3.4 30
1.2.5.100 100
1.2.6.220 44
1.2.7.119 60
1.2.10.29 210
1.2.11.110 150
........
复制代码
city.txt 如下 第一列也是ip段,第二列为城市
1.2.6.* 北京
1.2.7.* 天津
1.2.10.* 山东
1.2.3.* 山西
1.2.5.* 河南
1.2.11.* 上海
......
复制代码
怎么才能用 让这两个文件的数据合并成这样的形式 例如:
1.2.3.4 30 山西
1.2.5.100 100 河南
1.2.6.220 44 北京
......等等
{:3_198:}
作者:
rongpmcu
时间:
2013-01-09 00:06
本帖最后由 rongpmcu 于 2013-01-09 09:48 编辑
awk -F "[. ]" 'NR==FNR{a[$1"."$2"."$3]=$0}NR>FNR{for(i in a){if(index($0,i)){print a
,$5}}}' ip.txt city.txt
或者:
awk -F "[. ]" 'NR==FNR{a[$1"."$2"."$3]=$0}NR>FNR{for(i in a){if(index($0,i)){print a
,$5; next}}}' ip.txt city.txt
1.2.6.220 44 北京
1.2.7.119 60 天津
1.2.10.29 210 山东
1.2.3.4 30 山西
1.2.5.100 100 河南
1.2.11.110 150 上海
不要用这个,呵呵 有bug 本身这个命令有bug(不支持相同前缀的ip),还有就是cu有bug 数组显示不出来 a
我是要取a的第i的元素,
但是。。。。 cu的bug也遇到好多次了
这样就可以了,参考楼下的啦 呵呵
# awk -F "[. ]" 'NR==FNR{a[$1"."$2"."$3"."]=$5}NR>FNR{for(i in a){if(index($0,i)){print $0,a[i]; next}}print $0}' city.txt ip.txt
复制代码
作者:
yestreenstars
时间:
2013-01-09 00:12
awk 'NR==FNR{sub(/\*/,"");a[$1]=$2;next}{b=gensub(/(.*\.).*/,"\\1",1);print $0,a[b]}' city.txt ip.txt
复制代码
作者:
jy01768678
时间:
2013-01-09 10:34
回复
3#
yestreenstars
{:3_189:} 感谢星辰~不知道gensub能不能别的函数呀 我机器上暂时没这个函数~
作者:
Shell_HAT
时间:
2013-01-09 10:37
回复
4#
jy01768678
试试gawk。你用的是什么系统?
作者:
blackold
时间:
2013-01-09 10:50
回复
4#
jy01768678
用sub吧。
作者:
yestreenstars
时间:
2013-01-09 11:10
回复
4#
jy01768678
awk 'NR==FNR{sub(/\*/,"");a[$1]=$2;next}{b=$0;sub(/[^\.]* .*/,"");print b,a[$0]}' city.txt ip.txt
复制代码
作者:
seesea2517
时间:
2013-01-09 14:11
本以为 join 专做这事的,没想到弄成这么复杂,而且还把顺序弄乱了,真是不好意思啊:
[seesea@UC ~]$ join -o2.2 2.3 1.3 <(sed -r 's/(.*)\.[^.]+$/\1 &/g' city.txt | sort ) <(sed -r 's/(.*)\.[^.]+$/\1 &/g' ip.txt | sort)
1.2.10.29 210 山东
1.2.11.110 150 上海
1.2.3.4 30 山西
1.2.5.100 100 河南
1.2.6.220 44 北京
1.2.7.119 60 天津
复制代码
作者:
ljwd1000
时间:
2013-01-09 16:48
awk -F'[. ]' 'NR==FNR{a[$1"."$2"."$3]=$NF}NR>FNR{for(i in a)if($0~i)print $0,a[i]}' city.txt ip.txt
复制代码
作者:
jy01768678
时间:
2013-01-09 18:42
回复
5#
Shell_HAT
ubuntu 11.10{:3_193:}
作者:
jy01768678
时间:
2013-01-09 18:55
回复
2#
rongpmcu
长姿势了 感谢~{:3_182:}
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2