Como encontrar dados duplicados em um arquivo de texto Linux com uniq

Como encontrar dados duplicados em um arquivo de texto Linux com uniq

Você já se deparou com arquivos de texto com linhas repetidas e palavras duplicadas? Talvez você trabalhe regularmente com saída de comando e queira filtrá-los para sequências distintas. Quando se trata de arquivos de texto e remoção de dados redundantes no Linux, o comando uniq é sua melhor aposta.





Neste artigo, discutiremos o comando uniq em detalhes, juntamente com um guia detalhado sobre como usar o comando para remover linhas duplicadas de um arquivo de texto.





O que é o comando uniq?

O comando uniq no Linux é usado para exibir linhas idênticas em um arquivo de texto. Este comando pode ser útil se você deseja remover palavras ou strings duplicadas de um arquivo de texto. Como o comando uniq corresponde a linhas adjacentes para localizar cópias redundantes, ele só funciona com arquivos de texto classificados.





Felizmente, você pode canalizar o ordenar comando com uniq para organizar o arquivo de texto de uma forma que seja compatível com o comando. Além de exibir linhas repetidas, o comando uniq também pode contar a ocorrência de linhas duplicadas em um arquivo de texto.

Como usar o comando uniq

Existem várias opções e sinalizadores que você pode usar com o uniq. Alguns deles são básicos e executam operações simples, como imprimir linhas repetidas, enquanto outros são para usuários avançados que frequentemente trabalham com arquivos de texto no Linux.



Sintaxe Básica

A sintaxe básica do comando uniq é:

uniq option input output

...Onde opção é a sinalização usada para invocar métodos específicos do comando, entrada é o arquivo de texto para processamento e saída é o caminho do arquivo que armazenará a saída.





o saída argumento é opcional e pode ser ignorado. Se um usuário não especificar o arquivo de entrada, o uniq obtém os dados da saída padrão como entrada. Isso permite que um usuário canalize o uniq com outros comandos Linux .

Exemplo de arquivo de texto

Estaremos usando o arquivo de texto duplicate.txt como entrada para o comando.





127.0.0.1 TCP
127.0.0.1 UDP
Do catch this
DO CATCH THIS
Don't match this
Don't catch this
This is a text file.
This is a text file.
THIS IS A TEXT FILE.
Unique lines are really rare.

Observe que já classificamos este arquivo de texto usando o ordenar comando. Se você estiver trabalhando com algum outro arquivo de texto, poderá classificá-lo usando o seguinte comando:

sort filename.txt > sorted.txt

Remover linhas duplicadas

O uso mais básico do uniq é remover strings repetidas da entrada e imprimir uma saída única.

uniq duplicate.txt

Saída:

Observe que o sistema não exibe a segunda ocorrência da linha Este é um arquivo de texto . Além disso, o comando mencionado apenas imprime as linhas exclusivas do arquivo e não afeta o conteúdo do arquivo de texto original.

Contar Linhas Repetidas

Para produzir o número de linhas repetidas em um arquivo de texto, use o -c sinalizar com o comando padrão.

uniq -c duplicate.txt

Saída:

O sistema exibe a contagem de cada linha existente no arquivo de texto. Você pode ver que a linha Este é um arquivo de texto ocorre duas vezes no arquivo. Por padrão, o comando uniq diferencia maiúsculas de minúsculas.

Para imprimir apenas linhas duplicadas do arquivo de texto, use o -D bandeira. o -D apoia Duplicado .

uniq -D duplicate.txt

O sistema exibirá a saída da seguinte forma.

This is a text file.
This is a text file.

Pular campos durante a verificação de duplicatas

Se você quiser pular um certo número de campos enquanto combina as strings, você pode usar o -f sinalizar com o comando. o -f apoia Campo .

Considere o seguinte arquivo de texto fields.txt .

192.168.0.1 TCP
127.0.0.1 TCP
354.231.1.1 TCP
Linux FS
Windows FS
macOS FS

Para pular o primeiro campo:

uniq -f 1 fields.txt

Saída:

192.168.0.1 TCP
Linux FS

O comando mencionado pulou o primeiro campo (os endereços IP e nomes do sistema operacional) e correspondeu à segunda palavra (TCP e FS). Em seguida, ele exibiu a primeira ocorrência de cada correspondência como saída.

Ignorar caracteres ao comparar

Assim como pular campos, você também pode pular caracteres. o -s sinalizador permite que você especifique o número de caracteres a serem ignorados ao corresponder as linhas duplicadas. Este recurso ajuda quando os dados com os quais você está trabalhando estão na forma de uma lista da seguinte maneira:

Por que os serviços do Google Play pararam?
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

Para ignorar os primeiros dois caracteres (as numerações da lista) no arquivo list.txt :

uniq -s 2 list.txt

Saída:

Na saída acima, os primeiros dois caracteres foram ignorados e o restante deles foi correspondido por linhas exclusivas.

Verifique o primeiro número N de caracteres para duplicar

o -no sinalizador permite que você verifique apenas um número fixo de caracteres para duplicatas. Por exemplo:

uniq -w 2 duplicate.txt

O comando mencionado apenas corresponderá aos dois primeiros caracteres e imprimirá linhas exclusivas, se houver.

Saída:

Remover a sensibilidade a maiúsculas e minúsculas

Como mencionado acima, o uniq diferencia maiúsculas de minúsculas enquanto combina linhas em um arquivo. Para ignorar a caixa do caractere, use o -eu opção com o comando.

uniq -i duplicate.txt

Você verá a seguinte saída.

Observe na saída acima, uniq não exibiu as linhas PEGUE ISTO e ESTE É UM ARQUIVO DE TEXTO .

Enviar saída para um arquivo

Para enviar a saída do comando uniq para um arquivo, você pode usar o Redirecionamento de saída ( > ) personagem da seguinte forma:

uniq -i duplicate.txt > otherfile.txt

Ao enviar uma saída para um arquivo de texto, o sistema não exibe a saída do comando. Você pode verificar o conteúdo do novo arquivo usando o gato comando.

cat otherfile.txt

Você também pode usar outras maneiras de enviar saída de linha de comando para um arquivo no Linux .

Analisando dados duplicados com uniq

Na maioria das vezes, ao gerenciar servidores Linux, você estará trabalhando no terminal ou editando arquivos de texto. Portanto, saber como remover cópias redundantes de linhas em um arquivo de texto pode ser um grande trunfo para o seu conjunto de habilidades do Linux.

Trabalhar com arquivos de texto pode ser frustrante se você não souber como filtrar e classificar o texto em um arquivo. Para tornar seu trabalho mais fácil, o Linux possui vários comandos de edição de texto, como sed e awk que permitem trabalhar de forma eficiente com arquivos de texto e saídas de linha de comando.

Compartilhado Compartilhado Tweet O email Estes 10 exemplos Sed farão de você um usuário avançado do Linux

Quer se tornar um usuário avançado do Linux? Dominar o sed ajudará. Aprenda com esses 10 exemplos sed.

Leia a seguir
Tópicos relacionados
  • Linux
  • Linux
Sobre o autor Deepesh Sharma(79 artigos publicados)

Deepesh é o Editor Júnior para Linux na MUO. Ele escreve guias informativos sobre o Linux, com o objetivo de fornecer uma experiência agradável a todos os recém-chegados. Não tenho certeza sobre filmes, mas se você quiser falar sobre tecnologia, ele é o cara. Em seu tempo livre, você pode encontrá-lo lendo livros, ouvindo diferentes gêneros musicais ou tocando seu violão.

Mais de Deepesh Sharma

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever