awk help

Hi All,

i have a log with following content

<clientRequestResponse xmlns="http://www.openuri.org/">
..........................................
<Sender>a_care</Sender>
........................................
<resultCode>0</resultCode>
....................................
</clientRequestResponse>
<clientRequestResponse xmlns="http://www.openuri.org/">
..........................................
<Sender>test</Sender>
........................................
<resultCode>0</resultCode>
....................................
</clientRequestResponse>
<clientRequestResponse xmlns="http://www.openuri.org/">
..........................................
<Sender>test</Sender>
........................................
<resultCode>2</resultCode>
....................................
</clientRequestResponse>

there are many such entries with different Sender values. Now i want to count the number of Sender values for which resultCode is 0 using sed/awk.

so for the above e.g. it should print

a_care 1
test 1

(test count is 1 because in the 3rd block resultCode is 2)

Thanks and Regards,
uttam hoode

awk '/Sender/{k=$3;x[k];next}
/resultCode>0</{x[k]++}END{
for(i in x)print i,x+0}' FS="[<>]" filename

Use nawk or /usr/xpg4/bin/awk on Solaris.

Hi,
Hope this can help you!

input:

<clientRequestResponse xmlns="http://www.openuri.org/">
<Sender>a_care</Sender>
<resultCode>0</resultCode>
</clientRequestResponse>
<clientRequestResponse xmlns="http://www.openuri.org/">
<Sender>test</Sender>
<resultCode>0</resultCode>
</clientRequestResponse>
<clientRequestResponse xmlns="http://www.openuri.org/">
<Sender>test</Sender>
<resultCode>2</resultCode>
</clientRequestResponse>
<clientRequestResponse xmlns="http://www.openuri.org/">
<Sender>a_care</Sender>
<resultCode>0</resultCode>
</clientRequestResponse>
<clientRequestResponse xmlns="http://www.openuri.org/">
<Sender>test</Sender>
<resultCode>0</resultCode>
</clientRequestResponse>
<clientRequestResponse xmlns="http://www.openuri.org/">
<Sender>test</Sender>
<resultCode>2</resultCode>
</clientRequestResponse>
<clientRequestResponse xmlns="http://www.openuri.org/">
<Sender>leo</Sender>
<resultCode>2</resultCode>
</clientRequestResponse>

output:

a_care ---> 2
test ---> 2

code:

awk '{
if ( index($0,"Sender>")!=0)
{
	tmp=substr($0,9,length($0)-17)
	brr[NR]=tmp
}
if (index($0,"resultCode>")!=0)
{
	if (substr($0,13,1)==0)
	{
		str=brr[NR-1]
		arr[str]=arr[str]+1
	}
}
}
END{
for (i in arr)
if (arr>=0)
print i" ---> "arr
}' a