我有这个 16 列文件(制表符分隔符):
0/0;20,20 0/1;20,20 0/0;20,20 0/1;20,20 0/0;20,20 0/1;20,20 0/1;20,20 0/1;20,20 0/1;20,20 0/1;20,20 0/1;20,20 0/1;20,20 0/1;20,20 0/1;20,20 0/1;20,20 0/1;20,20
0/0;11,11 0/2;11,6 0/0;11,11 0/2;11,6 0/0;11,11 0/1;11,6 0/3;11,6 0/2;11,6 0/2;11,6 0/1;11,6 0/2;11,6 0/1;11,6 0/1;11,6 0/1;11,6 0/1;11,6 0/1;11,6
0/0;12,12 0/1;12,10 0/0;12,12 0/1;12,10 0/0;12,12 0/1;12,10 0/1;12,10 0/1;12,10 0/1;12,10 0/1;12,10 0/1;12,10 0/1;12,10 0/1;12,10 0/1;12,10 0/1;12,10 0/1;12,10
0/0;43,43 0/1;43,44 0/0;43,43 0/1;43,44 0/0;43,43 0/1;43,44 0/1;43,44 0/1;43,44 0/1;43,44 0/1;43,44 0/1;43,44 0/1;43,44 0/1;43,44 0/1;43,44 0/1;43,44 0/1;43,44
0/0;10,10 0/0;10,10 0/0;10,10 0/0;10,10 0/0;10,10 0/0;10,10 0/0;10,10 0/1;10,9 0/0;10,10 0/0;10,10 0/0;10,10 0/1;10,9 0/2;10,11 0/0;10,10 0/0;10,10 0/1;10,9
我需要删除 $2、$4 和 $6 列中的值到末尾 $16 相等的整行。我只是用:
awk -F'\t' '!a[$2 $4 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16]++' test.txt
但是仍然输出所有行。我应该只得到两行,我注意到指定列之间的差异:
0/0;11,11 0/2;11,6 0/0;11,11 0/2;11,6 0/0;11,11 0/1;11,6 0/3;11,6 0/2;11,6 0/2;11,6 0/1;11,6 0/2;11,6 0/1;11,6 0/1;11,6 0/1;11,6 0/1;11,6 0/1;11,6
0/0;10,10 0/0;10,10 0/0;10,10 0/0;10,10 0/0;10,10 0/0;10,10 0/0;10,10 0/1;10,9 0/0;10,10 0/0;10,10 0/0;10,10 0/1;10,9 0/2;10,11 0/0;10,10 0/0;10,10 0/1;10,9
有什么帮助吗?
这不是最终解决方案,但它可以给您一个开始:
cat file1.txt | awk -F "\t" '{if ($2!=$4) print $0}'