Identifique registros exclusivos em CSV com base em colunas específicas [duplicado]

1

Se a entrada for

foo,bar,baz
bar,baz,qux
qux,quux,baz
bar,foo,qux
waldo,fred,garply

a saída deve ser

foo,bar,baz
bar,baz,qux
waldo,fred,garply

Como você pode ver, os registros são desduplicados com base no valor da terceira coluna. Se vários registros tiverem o mesmo valor da terceira coluna, escolha um aleatório (ou o primeiro; não importa)

    
por David Bryant 17.05.2018 / 22:40

2 respostas

7

A resposta idiomática do awk é awk -F, '!seen[$3]++' file

Isso imprimirá uma linha na primeira vez que um valor for visto na terceira coluna.

    
por 17.05.2018 / 22:45
2

Se você não se incomoda com a ordem da saída, pode usar apenas sort , como abaixo.

  • -t, define o delimitador de campo como ","
  • -k3 define a chave de ordenação como o terceiro campo
  • -u indica que somente resultados exclusivos são desejados

    $ sort -t, -k3 -u arquivo foo, bar, baz waldo, fred, garply bar, baz, qux $

por 18.05.2018 / 00:00