function firstthree(val, xv) {
sub(/\.[0-9]+$/,"",val)
return val
}
function splitnprint(lis, z,pp) {
z = split(lis,arr1)
while (pp <= z) {
print arr1[pp]
pp++
}
}
function allmatches(aname,aval,p1) {
for (all in aname) {
ptr = firstthree(aname[all])
#printf("Comparing %s to %s\n", ptr, aval)
if (aval == ptr && all != p1) {
#printf("Found match at %s vs %s, count = %d\n",aval,ptr,all)
return 1;
}
}
return 0
}
function genlist(aname,aval,ccnt,max,list,f, y,pt) {
for (y=ccnt ; y <= max ; y++) {
pt = firstthree(aname[y])
if (aval == pt && y != ccnt) {
f += 1
list = list" "aname[y]
aname[y] = 0
ccnt = y
return genlist(aname,aval,ccnt,max,list,f)
}
}
if (f > 1) {
return list
}
}
{
array[NR]=$0
}
END {
for (i=1 ; i <= (NR - 1) ; i++) {
for (p=(i + 1) ; p <= NR ; p++) {
split(array[i],arr1,".")
split(array[p],arr2,".")
if (arr1[1] > arr2[1] && arr1[1] < 192) {
tmp = array[i]
array[i] = array[p]
array[p] = tmp
} else if (arr1[1] >= 192) {
delete array[i]
}
}
}
a=0
print "No keepers"
for (x=1 ; x <= NR ; x++) {
if (array[x]) {
new = firstthree(array[x])
if ((allmatches(array,new,x)) < 1) {
print array[x]
}
sortarr[a++] = genlist(array,new,1,NR,"",0)
}
}
printf("\nKeepers:")
for (mm=1 ; mm <= a ; mm++) {
if (sortarr[mm]) {
splitnprint(sortarr[mm])
}
}
}