我已经排序了很多IP的列表,但我仍然需要将它们分组到子网中。例如:
223.247.184.95
223.247.186.243
223.247.208.16
223.247.209.139
223.84.128.24
223.84.159.214 *
223.84.159.245 *
市场知识产权与" *"应该全部按照! 223.84.159。*'进行分组。那里 没有数据库,只有这个带有10.000个条目的文本文件!
我测试了awk和uniq命令,但我的结果都不是我想要的。
答案 0 :(得分:0)
目前尚不清楚,因为您没有显示输出。你可以尝试一下,让我知道如果这对你有帮助,它只会打印出Input_file中包含*
的那些行。
awk '$2=="*"{print $1}' Input_file
答案 1 :(得分:0)
假设您的IP位于名为ips
的文件中,该文件分布在不同行的不同字段上,字段分隔符是默认值,即空格。
实施例:
cat ips
223.247.184.95 223.247.186.243 223.247.208.16 223.247.209.139 223.84.128.24
223.84.159.214* 223.84.159.245*
然后是
未分类的IP文件:以下awk代码
cat ips | awk '{for(i=1;i<=NF;i++){split($i,a,".");k=a[1]"."a[2]"."a[3];h[k]=h[k]" "$i}}END{for(k in h)printf(k": "h[k]"\n")}'
为您提供了不同C域的哈希表:
223.247.184: 223.247.184.95
223.247.186: 223.247.186.243
223.84.159: 223.84.159.214* 223.84.159.245*
223.84.128: 223.84.128.24
223.247.208: 223.247.208.16
223.247.209: 223.247.209.139
排序的IP文件:如果先前已对包含您的IP的文件进行了排序,那么就会有更高效,更快速的单行
cat ips| awk '{for(i=1;i<=NF;i++){split($i,a,".");cn=a[1]"."a[2]"."a[3]; if(cn != c){c=cn;printf("\n"c": ")};printf($i" ")}}END{printf("\n")}'
给你以及
223.247.184: 223.247.184.95
223.247.186: 223.247.186.243
223.247.208: 223.247.208.16
223.247.209: 223.247.209.139
223.84.128: 223.84.128.24
223.84.159: 223.84.159.214* 223.84.159.245*