我想使用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
文件的代码是错误的吗?
答案 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