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以同样的事件并删除重复进行排序,但这并不占不同的“得分”。我想知道如何在忽略分数的同时进行排序,然后在跟踪最高分数的同时过滤掉重复项。
这可以自己完成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)