Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!mcsun!hp4nl!star.cs.vu.nl!engbert From: engbert@cs.vu.nl (Engbert Gerrit IJff) Newsgroups: comp.unix.shell Subject: Re: How to get AWK to output 2 fields at once Message-ID: <8109@star.cs.vu.nl> Date: 1 Nov 90 15:20:07 GMT References: <297@twg.bc.ca> <9622@helios.TAMU.EDU> <1990Oct29.171816.7459@mrspoc.Transact.COM> Sender: news@cs.vu.nl Reply-To: engbert@cs.vu.nl (Engbert Gerrit IJff) Organization: VU Dept. of Computer Science, Amsterdam, The Netherlands Lines: 49 In article <1990Oct29.171816.7459@mrspoc.Transact.COM>, itkin@mrspoc.Transact.COM (Steven M. List) writes: ) 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! ) -- IMHO you will only get one x containing the whole awk output and an this will cause the error message grep: illegal regular expression: No remembered search string. However, using fgrep in your simple example works fine, provided the whole construct is NOT meant to search for regular expressions. Bert.