[question] trouble with an 'exercise'

Hello guys..
well, im kinda newbie with unix because i started to learn it like 2 weeks ago.

then i started to make some exercises, but i got stucked on this one :

so, i need to know how many different 'names' has the 5th field and how many times each name appears.

i was trying with a "cut -d'|' -f5 filename | sort;" , but it only returns me all 5th field names ordered.

then i talked with few friends, they told me to use the awk command, i tried to read few manuals but i couldn't make it.

so, i would be grateful if anyone could help me with it.

thanks
and btw, sorry my bad english

Enio.

UPDATE
well, i kept trying with the awk and got the different methods name on 5th field with :

awk -F'|' '{print $5}' file1 | sort | uniq;

now i "just" need to know how many times they appear =/

awk -F'|' '{arr[$5]++} END {for(i in arr) printf("[%s] appeared %d times\n", i, arr)}' file1

wow thanks a lot dude :b::b:

but can you explain me how you did it??I wanna know how you used those indexes.

and can you give me a hand on exercise B too?? i need to know the total of ERRORS and SUCCESS.Success transactions are logged with the word INFO in the beginning of the line and and error transactions are with a ERROR instead.

i used a

grep -C INFO file1;
grep -c ERROR file1;

to know the total of errors and succes at the total,but now i need for each sub method =/

thanks in advance

For any command that returns a number of lines EG 'grep INFO' you can cound the number of lines with wc -l

EG

grep INFO | wc -l

this will return the number of lines matching INFO

ya i know, but i need to complement that A) exercise.

when i use vgersh99's code i get like :
[SubMethod1] appeared 100 times
[SubMethod3] appeared 123 times
[SubMethod2] appeared 15 times

for B) i need like..

[SubMethod1] appeared 100 times with 3 errors and 97 successful
[SubMethod2] appeared 123 times with 3 errors and 120 successful
[SubMethod3] appeared 15 times with 5 errors and 10 successful

awk -F'|' '/^INFO/{arrS[$5]++} /^ERROR/{arrE[$5]++} {arr[$5]++}END {for(i in arr) printf("[%s] appeared %d times with %d errors and %d successful\n", i, arr, arrE, arrS )}' file1

thanks again vgersh :slight_smile:

well, now i'm stucked on another one,this is kinda complicated for me =/
3.1- Total transactions per hour
3.2- Total transactions per business hour

the date/time is the 4th field with this format : yyyy-mm-dd hh:mm:ss,MMM (M=miliseconds).
also the 'business hour' is between 09:00:00,000 ~ 18:00:00.000.

thanks in advance

EDIT� :
already did it by myself...here the code if any1 else has the same question:

cat filename | cut -d'|' -f4 | cut -d' ' -f2 |awk -F':' '{arr[$1]++} END {for(i in arr) printf("%s appears %d times.\n", i, arr)}' | sort ;