Input file:
$ cat results.txt
Anil:Awk:Pass
Rakesh:Sed:Fail
Anil:Expect:Pass
Bau:Bash:Fail
sbnak:ksh:Pass
Rakesh:Awk:Pass
Anil:Bash:Fail
Neo:zsh:Fail
Required: Count the number of Pass and Fails for each of the names(1st field) and print in the following order. i.e.
Name Num_fail_entries Num_pass_entries
Awk solution:
$ awk '
BEGIN {FS=":"; print "Name Num_fail Num_pass"} {
n[$1]++;
F_[$1] += ($3 == "Fail" ? 1 : 0)
P_[$1] += ($3 == "Pass" ? 1 : 0)
}
END {
for (i in n) {
print i,F_[i],P_[i]
}
}' results.txt
Output:
Name Num_fail Num_pass
Neo 1 0
Rakesh 1 1
Anil 1 2
Bau 1 0
sbnak 0 1
No comments:
Post a Comment