- 论坛徽章:
- 2
|
回复 10# ghostvic - awk '{
- print "<"$1"\n"$2">"|"sort -t'.' -k3,3 -k4,4n" #打印文件的第一列和第二列,并加入两个方向标签,为后面第二个awk分析准备,最后用sort 对ip作排序,以点为分隔符, 第三个列作为第一排序关键词,第四列作为第二关键词,而且按照数字大小排列(-n)。
- }
- ' ip.txt |\
- awk '
- /</{p++} # 如果ip含有"<"符号,p自加1,也就是原来文件中起始ip
- />/{p--} # 如果ip含有">"符号,p自减1,也就是原来文件中的结束ip
- p==1&&++a[p]==1{printf gensub("<","",1,$0"--")} # 如果p值为1,并且a[p]为1,也就是p第一次等于1的时候,打印新的起始ip (并删掉"<")
- p==0&&NR>1{print gensub(">","",1,$0);delete a # 如果p值为0,并且NR>1, 打印新的结束ip (并删除">"),然后删除数组a。
- } '
复制代码 你可以通过下面的代码,查看下,p,和a[p]的变化- awk '{print "<"$1"\n"$2">"|"sort -t'.' -k3,3 -k4,4n"}' ip.txt |awk '/</{p++}/>/{p--}p==0&&NR>1{delete a}{print p,a[p],$0} '
复制代码 |
|