Perl one-liner aqui:
perl -F'\t' -lane '$r{$F[0].$F[1].$F[2].$F[3].$F[4]}=$_ if $F[8]=~/\// or $F[8]=~[A-Z] or $F[7]=~/\d/ or $F[6]=~/\b(\d\d)[ACTG]/ and $1<=50; END{print $r{$_} for (keys %r)}' file
Comentários:
Uma solução perl
foi oferecida supondo que esteja disponível em seu sistema. Se necessário, deve ser fácil reescrever em awk
, dado que a lógica e a sintaxe são muito semelhantes.
As condições são baseadas nas suas especificações e awk
snippet. Como já foi mencionado nos comentários, pelo menos um deles não parece aderente à sua amostra de arquivo de entrada.
O último registro encontrado com a mesma chave é impresso.
Os registros são impressos em ordem aleatória.