如果第一列等于其他行,则选择列内的最大数字
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 解决它,那就太棒了!非常感谢您的关注!
使用 sort
和 awk
:
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
标志)
我想让程序读取第 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 解决它,那就太棒了!非常感谢您的关注!
使用 sort
和 awk
:
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
标志)