Uniq -u m'a rendu fou parce qu'il ne fonctionnait pas.
Donc, au lieu de cela, si vous avez python (la plupart des distros et serveurs Linux l'ont déjà) :
En supposant que vous avez 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 des lignes vides, l'ensemble final peut contenir des chaînes '' ou des chaînes à espace unique. Vous pouvez supprimer cela plus tard. Ou simplement copier à partir du terminal ;)
#
Juste pour info, à partir de la page de manuel de uniq :
"Note : 'uniq' ne détecte pas les lignes répétées à moins qu'elles ne soient adjacentes. Vous pouvez vouloir trier l'entrée en premier, ou utiliser 'sort -u' sans 'uniq'. De plus, les comparaisons respectent les règles spécifiées par 'LC_COLLATE'."
Une des façons correctes, d'invoquer 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êts !