2017-10-18 15 views
0

J'essaie de trouver les lignes uniques basées sur plusieurs colonnes, mais mon code ne semble pas fonctionner. Ou au moins, il a réussi à supprimer presque tous les doublons.Shell Unix trouver des lignes uniques basées sur plusieurs colonnes

1 A 
2 B 
3 C 
1 A 
2 A 
3 B 
2 A 
3 C 
1 C 
1 A 
2 A 
3 B 

C'est le code que j'ai essayé

sort -k1 -k2 TEST.txt | awk -F"\t" '!seen[$1, $2]++' 

Sortie prévue:

1 A 
1 C 
2 A 
2 B 
3 B 
3 C 

Mais la sortie j'obtenir:

1 A 
1 C 
2 A 
2 B 
3 B 
3 B 
3 C 

J'ai encore le double de 3 B dans ma sortie. Quelqu'un peut-il aider? Quelque chose ne va pas avec mon code?

Répondre

0

Vous pouvez utiliser sort -u pour trier et obtenir un résultat unique:

sort -u file 

1 A 
1 C 
2 A 
2 B 
3 B 
3 C 

En utilisant awk vous pouvez le faire:

awk '!seen[$1,$2]++' file | sort 
+0

Vérifiez votre fichier d'entrée avec 'cat -A commande file' – anubhava

+0

Mon dernier les données qui sont '3 B' sont différentes des autres. C'est juste '3^IB' tandis que les autres ont'^M $ 'comme arrière. Esprit expliquant? – user8742634

+0

Vérifiez votre fichier d'entrée avec la commande 'cat -A file' et postez la sortie en question. – anubhava