如果第一列等于其他行,则选择列内的最大数字

Choosing the largest number within the column if the first column is equal to other lines

我想让程序读取第 1 列,如果数字重复,则查找第 5 列哪个值更高

1_248637391 .   C   T   592.4
1_248637391 .   C   T   505.79
1_248637400 .   C   A   600.00
1_248756167 rs61732484  C   G   1243.19
1_248756167 rs61732484  C   G   2002.61

输出:

1_248637391 .   C   T   592.4
1_248637400 .   C   A   600.00
1_248756167 rs61732484  C   G   2002.61

我正在处理大数据集,如果有人知道如何通过 bash 解决它,那就太棒了!非常感谢您的关注!

使用 sortawk:

sort -k1,1 -k5,5nr file | awk '!seen[]++'

sort 用于按第 1 列升序和第 5 列数字降序对文件进行排序。 awk 只打印 column 1.

中每个值的第一个条目

输出:

1_248637391 .   C   T   592.4
1_248637400 .   C   A   600.00
1_248756167 rs61732484  C   G   2002.61

仅使用排序的替代方法

$ sort -k5nr file | sort -u -k1,1

1_248637391 .   C   T   592.4
1_248637400 .   C   A   600.00
1_248756167 rs61732484  C   G   2002.61

根据第 5 个字段降序排序,按第 1 个字段求和并选择第一个元素(根据第一个排序最大的元素,可能需要 -s 标志)