我知道有一些问题。我尝试了他们提到的方法,但它不起作用。
然后我使用了bash代码:sort -r -n -k 3,3 Book1.csv > sorted.csv
另外,由于第一列是Id,第三列是得分,我想打印得分最高的ID。在这种情况下,它应该打印两个得分为50的id,如下所示:TRAAAAY128F42A73F0 TRAAAAV128F421A322
如何实现它?
答案 0 :(得分:1)
假设你的csv以逗号分隔而不是另一个分隔符,这是一种方法。但是,我认为如果不是全部都在awk中可能会有大部分内容,不幸的是我的知识仅限于awk,所以这就是我将如何快速完成。
首先根据评论,-t
的{{1}}标记解决了您的排序问题。
sort
答案 1 :(得分:0)
虽然打印所有分数最高的ID可以使用基本的unix命令在bash中完成,但我认为此时切换到实际的脚本语言会更好。 (除非你在一些非常有限的环境中)
幸运的是,perl
无处不在,打印分数最高的ID的任务可以在perl
中作为一条(长)行完成:
perl -lne 'if (/^([^,]*),[^,]*,\s*([^,]*)/) {push @{$a{$2}},$1; if($2>$m) {$m=$2;}} END {print "@{$a{$m}}";}' Book1.csv