Shell scripting kungfu

Paul Schmehl pauls at utdallas.edu
Fri Jan 18 09:09:14 PST 2008


I need to do the following:

Take a list of various strings, one of which is a quoted IP address, and 
extract the IPs.  (Done that.)

Then take the list of IPs and convert them to a list of IPs with masks on a 
single line.

IOW, I have converted the original list to this:

x.x.x.x
x.x.x.x
x.x.x.x
x.x.x.x

Now I need to remove the newlines and add /32, to the end of each IP so that I 
have this:
x.x.x.x/32,x.x.x.x/32,x.x.x.x/32,etc.

I got close with sed, but I'm not quite there.

I got this:

x.x.x.x/32,x.x.x.x
x.x.x.x/32,x.x.x.x
x.x.x.x/32,x.x.x.x

Here's the code I used:
cat hostlist | cut -d',' -f2 | cut -d'"' -f2 | sort | uniq | grep -v "inet" | 
sed '/[^*]$/N;s/\n */\/32,/'

What am I missing?



-- 
Paul Schmehl (pauls at utdallas.edu)
Senior Information Security Analyst
The University of Texas at Dallas
http://www.utdallas.edu/ir/security/



More information about the freebsd-questions mailing list