Path: utzoo!attcan!uunet!jarthur!usc!apple!mrspoc!itkin From: itkin@mrspoc.Transact.COM (Steven M. List) Newsgroups: comp.unix.shell Subject: Re: How to get AWK to output 2 fields at once Message-ID: <1990Oct29.171816.7459@mrspoc.Transact.COM> Date: 29 Oct 90 17:18:16 GMT References: <297@twg.bc.ca> <9622@helios.TAMU.EDU> Reply-To: itkin@guinan.Transact.COM Organization: Transact Software, Inc., Los Altos, CA Lines: 42 jak9213@helios.TAMU.EDU (John Kane) writes: >In article <297@twg.bc.ca> bill@twg.bc.ca (Bill Irwin) writes: >>I have what initially seemed to be a simple requirement: get the first >>two fields from each line in file_1, and use them as a search pattern for >>GREP to extract matching lines in file_2. [...] >>for x in `cat file_1 | awk '{ print $1 " " $2 }'` >>do >> grep "$x" file_2 >>done >>Of course, the GREP routine executed with x having the value of the first >>field of the first line of file_1, then with the value of the second >>field of the first line of file_1, then the first field of the second >>line, ..... >>Is there a way to get AWK to output "field_1 field_2" as the value of x, >>so that this can be used as the search pattern for GREP, rather than >>"field_1" "field_2" "field_1" "field_2"? >Yep, There is. >for x in `cat file_1 | awk '{print "\"" $1 " " $2 "\"")'` >do > grep "$x" file_2 >done This seems a bit complicated, doesn't it? How about: for x in "`cat file_1 | awk '{print $1, $2}'`" do grep "$x" file_2 done That is, why worry about the backslashes and quotes INSIDE AWK, when you can put them outside? Clean and simple! -- +----------------------------------------------------------------------------+ : Steven List @ Transact Software, Inc. :^>~ : : Chairman, Unify User Group of Northern California : : {apple,coherent,limbo,mips,pyramid,ubvax}!itkin@guinan.Transact.COM :