1751974 Members
5452 Online
108784 Solutions
New Discussion юеВ

Re: Grep in AWK

 
SOLVED
Go to solution
Anantha Ganiga
New Member

Re: Grep in AWK

Hi Praveen,
The same problem I am also encountered.
And I am also searching for the same solution.
the last solution you got seem to be a good one but it is not working for me and I could not able to understand
f1[ii] = $NF
If something worked for you then kindly post it to me.
Thanks advanced,
Regards,
Anantha Ganiga
Peter Nikitka
Honored Contributor

Re: Grep in AWK

Hi,

the assignment of the arry elements should read as
f1[ii] = $NF

The whole script I would change to
- a pure awk script
- not ignoring case sensivity
- include some flexibility

file get_bs_of_a.awk:
#!/usr/bin/awk
BEGIN{ while (getline < "b") f1[++ii] = $NF}
found_in_a { mypatt=$0
for( j=1; jj <=ii; jj++) if(index(mypatt, f1[jj]) {print "in a: "$0,"in b: "f1[j]"}

execute as
get_bs_of_a.awk a


What is done:
In the BEGIN statement you once collect the content of file "b" in an array - i.e. the file you lookup for matching pattern of file "a" is processed only once. If you need only a part of the file or of a line, assign the required value only.

found_in_a
is your condition for matching lines of "a" you want to lookup in "b"; it could be something like
/mypattern/
$3 == "wow"
NF == 42
or you just leave it to get every line.

mypatt=
this selects the string you want to 'grep' for in "b";
mypatt=$0 searches the whole line
mypatt=$3"-"$4"-"$5" searches for '-'seperated values of field 3 to 5.

index function
if you do not need pattern for matching but a simple string, index() is your friend. If you need a regexp, use the match operator "~" or the match() function.


mfG Peter
The Universe is a pretty big place, it's bigger than anything anyone has ever dreamed of before. So if it's just us, seems like an awful waste of space, right? Jodie Foster in "Contact"
rmueller58
Valued Contributor

Re: Grep in AWK

I do something pretty simple.

if I am looking for a particular string in a field, I do the following.

This example looks at output from ONSTAT and prints output. In this example I filter out data prior to running it against AWK as it reduces processing time by doing so.


onstat -u |grep -v informix|grep -v total |awk '{print $9, $4, $5, $10, $11}' |sort -n |tail -10