本帖最后由 pcl_test 于 2016-9-18 18:53 编辑
昨天有位人兄发帖需要以下功能!下面的代码能实现!
这个代码里的功能对我并无有用处,因为很多文本处理器可以完美做到,一千多万行也是几秒的事,但今天使用了一下!发现了漏掉问题
本人用的是gawk 4.1.3,windows10
对一个有376362行的文本进行处理,去重并将第四列替换为0-20后得出365993行,漏掉了10369行!!xxx.xxx.xxx.0-20得出的结果是以IP范围为格式,所以再乘20等于漏掉了207380个IP
可能有人会认为376362个IP有重复,但这376362行IP是无有重复的,格式为xxx.xxx.xxx.0
大家可以测试一下!
http://pan.baidu.com/s/1gdRzB6F
删除前3列相同ip地址,去重并将第四列替换为0-20
文本1:
58.217.200.13
58.217.200.15
220.181.185.141
58.217.200.37
61.135.185.31
123.126.99.31
61.135.185.32
输出文本2:
58.217.200.0-20
220.181.185.0-20
61.135.185.0-20
123.126.99.0-20
出现问题是这条代码!- gawk "BEGIN{FS=OFS=\".\"}{if(!a[$1.$2.$3]++)print $1,$2,$3,\"0-20\"}" 1.txt > 2.txt
复制代码 正确代码为“- gawk "BEGIN{FS=OFS=\".\"}{if(!a[$1\"_\"$2\"_\"$3]++)print $1,$2,$3,\"0-20\"}" 1.txt > 2.txt
复制代码
|