[lug] bash - awk - command substitution - for loop

karl horlen horlenkarl at yahoo.com
Tue Nov 6 20:04:51 MST 2007


I'm sure this is a simple question but I've been
searching for the last 3 hours and can't solve it.

I'm trying to feed the output of awk to a for loop.

The problem is that if the output of awk contains
multiple fields separated by any whitespace, the
variable i will be set for each and every field and
not the entire record.

As a bogus example:

for i in $( awk '{print $0}' access_log  | sort)
do 
echo $i "
done

Each field of the given record is printed on a new
line.  I want all the fields for a given record to
passed to $i as one long string.

If i use echo -n it concatentates all variable i's for
all records into one massive long string.  No good.

I've tried wrapping the command substitution in quotes
as well:

for i in "`awk '{print $0}' access_log  | sort `"
do 
echo $i "
done

And i get one huge variable again.  No good.  If I
take out the quotes, I'm back to each field being on a
separate line.

Hopefully you can follow here.  How do I preserve
white space within each record output generated by awk
in the command substitution?



__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 



More information about the LUG mailing list