为什么不打印个人玩家的最高分?

时间:2018-03-16 03:08:13

标签: bash shell awk

我想使用awk实用程序列出单个玩家的最高分数。

这是我的cricketer.txt文件:

Virat Kohli:30
Suresh Raina:90
Shikhar Dhawan:122
Virat Kohli:33
Shikhar Dhawan:39
Suresh Raina:10
Suresh Raina:44
MS Dhoni:101
MS Dhoni:33
Virat Kohli:39
Virat Kohli:93
Virat Kohli:94
Steven Smith:44
Steven Smith:32
Rohit Sharma:33
Rohit Sharma:18
Rohit Sharma:206
Steven Smith:55

这是我的max.awk文件:

awk -F ":" -v c=0 '{name[c]=$1;runs[c]=$2;c++;}
END{
i=0
j=0
while(i<NR)
{
    j=0
    k=0
    k1=0
    max=0
    while(j<NR)
    {
        if(name[i]==name[j])
        {
        cruns[k]=runs[j]
        k++
        }
        max=cruns[0]
        if(cruns[k1] > max)     
        {
            max=cruns[k1]
            k1=k1+1
        }
        j=j+1           
    }
    print name[i],max
    i=i+1
  }
}' cricketer.txt | sort | uniq > max.txt

这是我收到的max.txt文件。

MS Dhoni 101
Rohit Sharma 33
Shikhar Dhawan 122
Steven Smith 44
Suresh Raina 90
Virat Kohli 30

看起来它只打印每个玩家的第一个得分。 max.awk文件的代码是错误的吗?

2 个答案:

答案 0 :(得分:4)

关注awk可能对您有所帮助,以获得每个板球运动员的最高分数:)

awk -F":" '{a[$1]=a[$1]>$NF?a[$1]:$NF} END{for(i in a){print i,a[i]}}' Input_file

答案 1 :(得分:1)

$ sort -t: -k2rn file | awk -F':' '!seen[$1]++'
Rohit Sharma:206
Shikhar Dhawan:122
MS Dhoni:101
Virat Kohli:94
Suresh Raina:90
Steven Smith:55