计算子串出现的次数并保持最高分

std*_*err 2 linux scripting sed sort uniq

我有一个字符串列表,如:

StringA  45
StrinB  98 
StringA  35
StringA  83
StrinB  78
StringC  65
StrinB  98
Run Code Online (Sandbox Code Playgroud)

我想过滤掉重复项,打印出现的次数(子字符串的出现次数可以不同,但​​在一侧由 ^(字符串开头)分隔,在另一侧由 \tab 分隔)加上仅打印最高数字发现与字符串相关联,即我希望输出类似于(字符串、出现次数和分数也可以以不同的顺序出现):

3 83 StringA
3 98 StrinB
1 65 StringC
Run Code Online (Sandbox Code Playgroud)

我明白,我可以使用的组合sort,并uniq以同样的事件并删除重复进行排序,但这并不占不同的“得分”。我想知道如何在忽略分数的同时进行排序,然后在跟踪最高分数的同时过滤掉重复项。

αғs*_*нιη 6

这可以自己完成awk:

awk '{ max[$1]=( max[$1]>$2?max[$1]:$2 ); seen[$1]++ } 
    END{ for (x in seen) print seen[x], max[x], x }' infile
3 98 StrinB
3 83 StringA
1 65 StringC
Run Code Online (Sandbox Code Playgroud)