uniq -u tem me deixado louco porque não funcionou.
Então, em vez disso, se você tiver python (a maioria das distros e servidores Linux já o tem):
Supondo que você tenha o arquivo de dados em 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'))
Observe que, devido às linhas vazias, o conjunto final pode conter '' ou apenas strings de espaço. Você pode remover isso mais tarde. Ou simplesmente copie do terminal;)
#
Apenas para sua informação, da página de manual da uniq:
"Nota: 'uniq' não detecta linhas repetidas a menos que sejam adjacentes. Você pode querer classificar a entrada primeiro ou usar 'sort -u' sem 'uniq'. Além disso, as comparações respeitam as regras especificadas por 'LC_COLLATE'."
Uma das maneiras corretas de invocar com: # sort nonUnique.txt | uniq
Exemplo de execução:
$ 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
Os espaços podem ser impressos, então esteja preparado!
sort file | uniq -u
irá imprimir no console para você.