BEGIN { DEBUG = 0 }
function setup(first_split, second_split) {
src = $1; dst = $2; port = $3
j = split(src, src_a, first_split)
k = split(src_a[4], src_a_2, second_split)
if(DEBUG)
print "<" first_split second_split ">", j, k, "\n" src
}
/^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*,[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/ {
setup(",", ",")
for(i = 1; i <= j; ++i)
print src_a[i], dst, port
next
}
/^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*,[0-9][0-9]*[ ,]/ {
setup(".", ",")
for(i = 1; i <= k; ++i)
print src_a[1] "." src_a[2]"." src_a[3] "." src_a_2[i], dst, port
next
}
/^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*-/ {
setup(".", "-")
for(i = src_a_2[1]; i <= src_a_2[2]; ++i)
print src_a[1] "." src_a[2] "." src_a[3] "." i, dst, port
next
}
{ print }
My test file:
76.211.77.7 10.112.12.232 1521
76.211.77.8 10.112.12.232 1521
76.211.77.9,10,11 10.112.12.232 1521
76.211.77.12-13 10.112.12.232 1521
76.211.77.14,76.211.77.15,76.211.77.16 10.112.12.232 1521
This script will work in One True Awk as well as with gawk.
source
share