Eu tenho um arquivo [csv] com dados duplicados reimpressos, ou seja, os mesmos dados impressos duas vezes. Eu tentei usar o uniq de sort,
no sort myfile.csv | uniq -u
entanto, não há alteração no myfile.csv
, também tentei, sudo sort myfile.csv | uniq -u
mas não houve diferença.
Atualmente, meu arquivo csv se parece com isso
a
a
a
b
b
c
c
c
c
c
Eu gostaria de parecer
a
b
c
text-processing
files
3kstc
fonte
fonte
man sort
, você não pode classificar "no lugar".Respostas:
A razão da
myfile.csv
não está mudando é porque a-u
opção parauniq
se única imprimir linhas únicas. Neste arquivo, todas as linhas são duplicadas para que não sejam impressas.No entanto, o mais importante é que a saída não será salva
myfile.csv
porqueuniq
será impressa nostdout
(por padrão, no console).Você precisaria fazer algo assim:
$ sort -u myfile.csv -o myfile.csv
As opções significam:
-u
- mantenha apenas linhas únicas-o
- saída para este arquivo em vez destdout
Você deve ver
man sort
para mais informações.fonte
Como Belmin mostrou, o tipo é ótimo. Sua resposta é melhor para dados não classificados e é fácil de lembrar e usar.
No entanto, também é volátil, pois altera a ordem da entrada. Se você precisar absolutamente executar os dados na mesma ordem, mas remover duplicatas posteriores, o awk poderá ser melhor.
Caso de margem estranho, mas surge de vez em quando.
Além disso, se seus dados já estiverem classificados quando você estiver cutucando, poderá executar o uniq.
A desvantagem de ambas as minhas sugestões é que você precisa usar um arquivo temporário e copiá-lo novamente.
fonte
O uniq
-u
imprime apenas linhas exclusivas. Sua entrada não possui linhas exclusivas, portanto,uniq -u
imprima nada. Você só precisa desort
:fonte
Se você deseja manter a ordem do arquivo (não classificada), mas ainda assim remover duplicatas, também pode fazer isso
Por exemplo
Irá produzir
fonte