根据一列的相同值进行分组和排序,然后对这些组中的另一列进行排序

卡拉巴本

假设我得到了这个日志文件:

100.1 500
100.2 501
100.2 501
100.2 501
100.1 501
666.2 501
300.1 555
300.1 501
100.1 300
100.1 300
100.1 300
102.3 500
202.1 500
301.2 300

任何重复的行都应首先删除。然后交换列。然后根据第一列值(501、500等)对行进行分组,并根据这些值的计数对这些组进行排序。最后,按降序对此类组的第二列值进行排序。

这是我走了多远:

$ awk '{!seen[$2, $1]++}; END {for (i in seen) print i}' $filename |
       sort -k2 -n -r
555?300.1
501?666.2
501?300.1
501?100.2
501?100.1
500?202.1
500?102.3
500?100.1
300?301.2
300?100.1

这是预期的输出:

501 666.2
501 300.1
501 100.2
501 100.1
500 202.1
500 102.3
500 100.1
300 301.2
300 100.1
555 300.1
RavinderSingh13

使用GNU awk,您能否请尝试以下操作,尽管我仍然不确定OP是否完全需要它。由于OP在评论中确认这样做是可行的,因此添加了答案,并要求OP也相应地更改问题。

awk '
!c[$1,$2]++{
  a[$2]++
  b[$2]=(b[$2]?b[$2] ORS:"")$2 OFS $1
}
END{
  PROCINFO["sorted_in"] = "@val_num_desc"
  for(i in a){ print b[i] }
}
' Input_file

(我由Sundeep编辑)我自己对此并不完全了解,但这似乎可以解决 GNU awk

$ awk 'BEGIN{PROCINFO["sorted_in"] = "@val_num_desc"};
       !seen[$0]++{a[$2]++; b[$2][$1]}
       END{for(i in a) for(j in b[i]) print i, j}' ip.txt
501 666.2
501 300.1
501 100.2
501 100.1
500 202.1
500 102.3
500 100.1
300 301.2
300 100.1
555 300.1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据列表对列进行排序,然后对数据框中的另一列进行排序

根据列的值和另一列中列表的长度对数据框进行排序

按列分组,对另一列进行排序,然后为python中的行分配等级

在熊猫中对列进行排序,然后在保持上一列排序的同时对另一列进行排序

最好的方法是基于一列对numpy数组进行排序,然后根据另一列进行子排序?

Python (pandas) - 如何对一列中的值进行分组,然后根据另一列中的值删除或保留该组

Excel-按列对行进行分组,然后按另一列进行排序

根据熊猫中的另一列对唯一值进行排序

根据一列中的值(以另一列为条件)按顺序对数据进行排序

使用差异对列进行分组并在熊猫中按另一列对另一列进行排序

根据一列进行分组,并在另一列中获取总和值

对一列进行排序,以使一列跟随另一列的值

熊猫按另一列中的值对一列进行排序

如何按一列排序,但如何根据非数字的另一列进行排序?

根据另一列进行分组

MYSQL-如何使用ORDER BY和LIMIT对列进行排序,然后按另一列对这些结果进行排序

如何根据行中的特定值和熊猫中的另一列对行进行分组?

根据列值的条件对选定的行进行分组,然后转换另一列

如何对SQL ORDER BY进行排序,但根据另一列将结果分组?

在Pandas Dataframe中按一列排序,然后按另一列分组?

SQL按值对另一列进行排序

根据另一列的值在数据框的列上应用函数,然后进行分组

如何根据另一列中的唯一值对一列中的值进行分组?

如何在1列上对表进行排序,然后在PHP中对另一列进行排序

如何根据另一列数值对一列文本进行排序?

根据另一列的顺序对一列进行排序-Excel

根据另一列和第三列的总和对一列进行分组

根据 R 中另一列的值对列中的值进行分组

插入DataFrame列并根据PySpark或Pandas中的另一列进行排序