ar.*_*dll 2 string shell perl awk unique
我有一个包含如下数据的文件:
2012-01-02 GREEN 4
2012-01-02 GREEN 6
2012-01-02 GREEN 7
2012-01-02 BLUE 4
2012-01-02 BLUE 3
2012-01-02 GREEN 4
2012-01-02 RED 4
2012-01-02 RED 8
2012-01-02 GREEN 4
2012-01-02 YELLOW 5
2012-01-02 YELLOW 2
Run Code Online (Sandbox Code Playgroud)
我不能总是预测第二列中的字符串是什么(所以在上面的例子中有颜色,但数据文件可以包含第二列中的任何字符串).但是在第三列中总是有一个数字(我希望第二列中的特定字符串的最大值).是不是能够:
对于每个唯一的字符串,获得最大的相关值(所以使用上面的内容,你最终得到以下内容)?:
2012-01-02 GREEN 7
2012-01-02 BLUE 4
2012-01-02 RED 8
2012-01-02 YELLOW 5
Run Code Online (Sandbox Code Playgroud)或者使用Perl(甚至是shell)会更容易吗?任何代码示例非常感谢!
$ sort -k2,2 -k3,3nr input.txt | awk 'x!=$2{x=$2;print}'
2012-01-02 BLUE 4
2012-01-02 GREEN 7
2012-01-02 RED 8
2012-01-02 YELLOW 5
Run Code Online (Sandbox Code Playgroud)
你可以使用perl或awk使用几乎相同的技术(使用关联数组).
这是一个awk例子.max包含给定"密钥"的(当前)最大值lines,即最大值发生的行.
max[$2] < $3 {
max[$2] = $3
lines[$2] = $0
}
END {
for (x in lines)
print lines[x]
}
Run Code Online (Sandbox Code Playgroud)