Please stop top posting, Craig. Craig White wrote: > > On Dec 6, 2012, at 1:34 PM, m.roth at 5-cent.us wrote: > >> You rang? >> >> Craig White wrote: >>> a little out of my comfort zone and have practically gotten what I want >>> but awk seems determined to send a message via std error which is >>> problematic and annoying. Basically trying to get a list of virtual >>> host >>> names from nginx config files like this: >>> >>> $ awk -F" " '/./ { if ( match ( "^server_name$", $2 ) ) print $1 }' >>> /opt/nginx/sites/*.conf \ >>> | grep -v server_name | grep -v ';' | grep -v '}' >> >> Why are you doing all that piping and grepping? And the -F" " confuses >> me...oh, I see. First, whitespace is the default field separator in awk. >> Then, are you asking if there's a line with a "." in it, or just any >> non-whitespace? If the latter... mmm, I see, you *really* don't >> understand >> awk. >> >> awk -f '{if ( $1 ~ /server_name/ ) {\ >> server = $2;\ >> gsub(/;|}/,"",server);\ >> print server; >> } >> }' >> <snip> >> mark >> > Definitely have little to no understanding of awk but… > > /./ suppresses empty lines (records in awk speak) Oh. Never used it. Wrote a *lot* of *long* awk scripts over the years. But it doesn't matter - looking for $1 to be == server_name will only pick those lines. > > the gsub looks interesting but your code just tosses syntax errors I see I didn't out \ on the lines, which I wrote that way only to make it more readable. > > and yes Les, the >2 /dev/null definitely redirected the awk squawk to > where it belonged > Ok, I just d/l an nginx.conf file from <http://wiki.nginx.org/FullExample> and ran the following script on it: { if ( $1 ~ /server_name$/ ) { server = $2; gsub(/;|}/,"",server); print server; } } and my o/p was $ awk -f nginx.awk nginx.conf domain1.com domain2.com big.server.com mark