【发布时间】:2017-08-06 18:50:23
【问题描述】:
大家!
我想删除重复项,并在具有 4 个字段的文件中保留一列(第 4 列)中具有最高值的行。我必须在 Linux 服务器中执行此操作。
之前
gene subj e-value ident
g1 h1 0.05 75.5
g1 h2 0.03 60.6
g2 h7 0.00 80.5
g2 h9 0.00 50.3
g2 h4 0.03 90.7
g3 h5 0.10 30.5
g3 h8 0.00 76.8
g4 h11 0.00 80.7
之后
gene subj e-value ident
g1 h1 0.05 75.5
g2 h4 0.03 90.7
g3 h8 0.00 76.8
g4 h11 0.00 80.7
非常感谢,如果我重复了一些问题,我很抱歉!但我没有找到我的问题的答案。
【问题讨论】:
-
你试过什么?
-
我试过基于awk的命令,如
cat blast_selected_split0_outfmt6.txt | awk -F'\t' '{if($1$3 in a){if($7>a[$1$3]){a[$1$3]=$7;r[$1$3]=$0;}}else if ($3$1 in a){if($7>a[$3$1]){a[$3$1] = $7;r[$3$1] = $0;}}else{a[$1$3]=$7; r[$1$3]=$0;}} END{for(x in r)print r[x]}' -
但它保持重复
-
非常感谢!!
-
wrt 您发布的 awk 命令 - 不要连接数据来为数组创建索引,因为这不会创建唯一索引。
a bc的串联 =ab c的串联 =abc。因此,您应该使用a[$1,$3]和($1,$3) in a,而不是使用a[$1$3]和$1$3 in a。
标签: linux awk duplicates max