使用负值排序对第二列进行排序,然后对第三列进行排序

使用负值排序对第二列进行排序,然后对第三列进行排序

我有如下的日期。

random check/1 -0.02
random check/1 -0.05
random tell/1 -0.01
random tell/2 -0.02
random checking -0.00

我尝试对第二列进行排序,然后对第三列进行排序。我用了sort -n -k2,2 -k3,3 file。但它没有给出我正在寻找的输出。

输出应该是:

random check/1 -0.05
random check/1 -0.02
random checking -0.00
random tell/1 -0.01
random tell/2 -0.02

然后我想将它唯一化。所以最终的输出应该是链接

random check/1 -0.05
random checking -0.00
random tell/1 -0.01
random tell/2 -0.02

基本上,它对第二列进行排序,然后对第三列进行排序,然后对第二列进行排序,所以我只看到最差的数字。

答案1

sort -nk3,3 file | sort -uk2,2

答案2

sort -k2,2 -k3,3n | awk '$2!=s;{s=$2}'

对第二个字段的数据进行排序,然后对第三个字段进行数字排序。使用 awk 打印第二个字段的第一次出现(如果第二个字段与保存的值不同,则打印该行,然后保存第二个字段)。

相关内容