我有以下数据:

问题描述 投票:0回答:1
。 我正在尝试将

$univerved

$ usevers的计数总结为:
$user

user1 unreserved =1 user1 reserved =4 user2 unreserved =0 user2 reserved =1 user3 unreserved =1 user3 reserved =0

等。  我还需要获得$未保留$保留的总和一起计数,在这种情况下为110.
我尝试了下面的尝试;

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
unix sum
1个回答
0
投票
在您的示例输入中,我将获得此输出:

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


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.