Article View: comp.unix.shell
Article #1689Re: How to get AWK to output 2 fields at once
From: Engbert Gerrit IJff
Date: Thu, 01 Nov 1990 15:20
Date: Thu, 01 Nov 1990 15:20
49 lines
2308 bytes
2308 bytes
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.
Technical Details
Message-ID:
<8109@star.cs.vu.nl>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!mcsun!hp4nl!star.cs.vu.nl!engbertReferences:
<297@twg.bc.ca> <9622@helios.TAMU.EDU> <1990Oct29.171816.7459@mrspoc.Transact.COM>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!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