linux - 如何使用 AWK 来唯一化一个表(为每个唯一 ID 保留最大值)?

标签 linux bash awk

我有一个像这样的 TAB 分隔表(第一行是标题):

  symbol    value   chr start   end
  Arrb1 10  chr1    1000    2000
  Arrb1 20  chr1    1000    2000
  Arrb1 30  chr1    1000    2000
  Myc   5   chr2    3000    4000
  Actin 3   chr4    25000   30000
  Actin 5   chr4    25000   30000
    .
    .
    .

我想通过第一列(符号)来唯一化表格,如果同一个符号有多行,则保留具有最大值的行(第 2 列)。所以结果应该是这样的:

  symbol    value   chr start   end
  Arrb1 30  chr1    1000    2000
  Myc   5   chr2    3000    4000
  Actin 5   chr4    25000   30000
    .
    .
    .

我可以使用 AWK 来完成吗?谢谢!

最佳答案

awk -F'\t' 'NR==1{print}
 NR>1{if(b[$1]<$2){ a[$1]=$0; b[$1]=$2 }}
 END{for(x in a)print a[x]}' file

关于linux - 如何使用 AWK 来唯一化一个表(为每个唯一 ID 保留最大值)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21033474/

相关文章:

linux - 如何列出只包含两个字母的目录?

bash - 如何在 Bash 中更改全局背景颜色

bash - 未在 AWS CODEBUILD 上设置环境变量

awk - 如何从 awk 中的 "."之后的一行中删除文本?

linux - 从文本文件中获取值并在 UNIX 环境中进行计算

linux - 只提取文件名而不是路径+文件名

linux - 在 HTML 标签中匹配模式和替换

python - 为什么 bash 还在搜索 conda?

linux - 如何在 CentOS 最小安装中的 awk 中使用多个字段分隔符

linux - 如何在echo中使用Read命令,就像填空一样