$univerved
$ usevers的计数总结为:$user
user1 unreserved =1
user1 reserved =4
user2 unreserved =0
user2 reserved =1
user3 unreserved =1
user3 reserved =0
grep handle | awk -F' ' '$1!=p{ if (NR>1) print p, s; p=$1; s=0} {s+=$12} END{print p, s}' | sort | uniq -c | sort -n
pureawk
解决方案:
awk '/handle/ {
u = $3; # user in field 3
n12 = $4; # numbers 1 and 2 in field 4
split(n12 ,n, "/"); # split numbers separated by slash into array
un[u] += n[1]; # add to unreserved for user
re[u] += n[2]; # add to reserved for user
s += n[1]+n[2]; # add to total sum
}
END {
for(i in re) # loop over all associative array indices
{
# both arrays have the same index values
printf "%s unreserved =%d\n", i, un[i];
printf "%s reserved =%d\n", i, re[i];
}
printf "total =%d\n",s;
}'
(当然,您可以省略所有评论并将所有评论放入一行。)
您可以将输入馈送到
stdin
user1 unreserved =1
user1 reserved =4
user2 unreserved =0
user2 reserved =1
user3 unreserved =1
user3 reserved =0
user4 unreserved =1
user4 reserved =100
user5 unreserved =1
user5 reserved =1
total =110