我想使用该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
Run Code Online (Sandbox Code Playgroud)
这是我的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
Run Code Online (Sandbox Code Playgroud)
这是我max.txt
得到的文件。
MS Dhoni 101
Rohit Sharma 33
Shikhar Dhawan 122
Steven Smith 44
Suresh Raina 90
Virat Kohli 30
Run Code Online (Sandbox Code Playgroud)
看起来它只打印每个玩家的第一个分数。max.awk
文件的代码是错误的吗?
以下awk
可能对您有所帮助,以获得每个板球运动员的最高分:)
awk -F":" '{a[$1]=a[$1]>$NF?a[$1]:$NF} END{for(i in a){print i,a[i]}}' Input_file
Run Code Online (Sandbox Code Playgroud)