uniq -u m'a rendu fou parce que cela ne fonctionnait pas.
Donc, au lieu de cela, si vous avez python (la plupart des distributions et serveurs Linux l'ont déjà):
En supposant que vous ayez le fichier de données dans notUnique.txt
#Python
#Assuming file has data on different lines
#Otherwise fix split() accordingly.
uniqueData = []
fileData = open('notUnique.txt').read().split('\n')
for i in fileData:
if i.strip()!='':
uniqueData.append(i)
print uniqueData
###Another option (less keystrokes):
set(open('notUnique.txt').read().split('\n'))
Notez qu'en raison de lignes vides, l'ensemble final peut contenir des chaînes «» ou uniquement des espaces. Vous pouvez le supprimer plus tard. Ou évitez tout simplement de copier depuis le terminal;)
#
Juste pour info, à partir de la page uniq Man:
"Remarque: 'uniq' ne détecte pas les lignes répétées sauf si elles sont adjacentes. Vous pouvez d'abord trier l'entrée, ou utiliser 'sort -u' sans 'uniq'. De plus, les comparaisons respectent les règles spécifiées par 'LC_COLLATE'."
Une des méthodes correctes pour appeler avec: # sort nonUnique.txt | uniq
Exemple d'exécution:
$ cat x
3
1
2
2
2
3
1
3
$ uniq x
3
1
2
3
1
3
$ uniq -u x
3
1
3
1
3
$ sort x | uniq
1
2
3
Les espaces peuvent être imprimés, alors soyez prêt!
sort file | uniq -u
sortira vers la console pour vous.