Como remover os dois duplicados do arquivo com base nas duas primeiras colunas

1

Eu preciso remover os dois duplicados do arquivo test.txt com base nas duas primeiras colunas:

tom,22,777
tom,22,888
tom,18,54
ray,44,43843

resultado esperado:

tom,18,54
ray,44,43843

Eu tentei usar cat test.txt | sort -u t, k1,1 k2,2 , mas não está funcionando

    
por WAEL 13.12.2016 / 11:47

3 respostas

1

Você pode usar awk : processar o arquivo duas vezes, uma vez para contar as ocorrências do primeiro e do segundo campos e, em seguida, novamente para imprimir linhas, se a contagem for 1:

awk -F, 'NR==FNR{seen[$1,$2]++;next};seen[$1,$2]==1' infile infile
    
por 13.12.2016 / 14:25
1

Uma maneira de fazer isso, assumindo o GNU grep(1) (para fgrep -f - ) e assumindo que os campos na sua entrada consistem apenas em caracteres alfanuméricos:

cut -d , -f 1,2 file.csv | sort | uniq -d | fgrep -vwf - file.csv
    
por 13.12.2016 / 12:05
1

Tente isto

 cat file.txt | grep -v  "'cut -d , -f 1,2 file.txt | uniq -d'"
    
por 13.12.2016 / 14:21