A abordagem do KISS em awk
: mantém uma matriz das linhas e uma das contagens - depois imprime apenas as linhas cuja contagem é 1 no final:
awk '{a[$1]=$0; c[$1]++} END{for (i in a) {if (c[i] == 1) print a[i]}}' file
Como alternativa, se você tiver uma versão de uniq
que suporte a opção -w
( --check-chars
) e:
-
seus dados são classificados no primeiro campo; e
-
a largura do primeiro campo é constante
você pode usar isso:
uniq -uw 40 file
HWI-ST913:300:C5W5DACXX:7:1101:1477:2147 Ha1_00044161 80.6 31 6 0 94 2 1 31 5.1e-11 63.2
HWI-ST913:300:C5W5DACXX:7:1101:1629:2128 Ha6_00047653 90.9 33 3 0 2 100 173 205 5.1e-11 63.2
HWI-ST913:300:C5W5DACXX:7:1101:6099:2062 B2KZF9_PICAB 100.0 33 0 0 1 99 73 105 2.4e-13 70.9
Isso tem a vantagem de preservar a ordem do arquivo original, se isso for importante para sua aplicação.