Suponha que você tenha um arquivo como este:
NW_006521251.1 428 84134
NW_006521251.1 511 84135
NW_006521038.1 202 84155
NW_006521038.1 1743 84153
NW_006521038.1 1743 84154
NW_006520495.1 198 84159
NW_006520086.1 473 84178
NW_006520086.1 511 84180
Eu quero manter as linhas exclusivas com base nas colunas 1 e 2 (ou seja, não apenas na coluna dois, pois esse número pode se repetir sob um rótulo diferente na coluna um).
De modo que recebo isso como saída (remove a segunda repetição da NW_006521038.1 1743
lista):
NW_006521251.1 428 84134
NW_006521251.1 511 84135
NW_006521038.1 202 84155
NW_006521038.1 1743 84153
NW_006520495.1 198 84159
NW_006520086.1 473 84178
NW_006520086.1 511 84180
Existe uma maneira de fazer isso com o awk? Usar uniq file
não funciona.
Existe um idioma awk "famoso" para exatamente isso. Você quer fazer:
Isso cria um array associativo "visto" com as 2 colunas como chave. Use o operador de pós-incremento para que, na primeira vez que você encontrar essa chave, o valor seja zero. Use o operador de negação para um resultado "verdadeiro" na primeira vez que você vir a chave.
Se você não se importa que a saída seja classificada:
-u
- único-k1,2
- use os campos 1 e 2 juntos como a chave