2017-10-06 1 views

Répondre

2

En utilisant awk:

awk '{arr[$0]++}END{for(i in arr)if(arr[i]==1)print i}' infile 

et uniq Trier

$ sort file | uniq -u # -u generates unique entries; -d nonunique 
a,d 
b,d 

Résultats des tests:

$ cat file 
a,b 
a,c 
a,d 
a,b 
a,c 
b,e 
b,f 
b,d 
b,f 
b,e 

$ awk '{arr[$0]++}END{for(i in arr)if(arr[i]==1)print i}' file 
a,d 
b,d 

Explication:

  • arr[$0]++$0 est ligne de courant/disque, qui est utilisé comme clé de réseau, arr est un tableau, arr[$0]++ détient un nombre d'occurrence de la clé, de sorte que chaque fois que awk trouve en double clé, compte est incrémenté d'une unité.

  • Ainsi, au bloc de fin, un tableau à boucle, si le nombre est égal à un, imprime une telle clé de tableau.

1

Le plus court avec uniq commande:

uniq -u <(sort file) 
  • -u - seulement imprimer des lignes uniques

La sortie:

a,d 
b,d