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