Comandos Linux

Comando Linux uniq

Comando Linux uniq
O que é “uniq”? É uma ótima ferramenta de linha de comando que relatará ou omitirá qualquer texto duplicado na entrada fornecida. É uma parte do GNU coreutils e, portanto, disponível em todos os sistemas UNIX / Linux existentes. Vamos começar com “uniq”!

Uso Uniq

É assim que a estrutura básica dos comandos “uniq” se parece.

uniq

Por exemplo, vamos verificar o conteúdo de “duplicado.TXT". Obviamente, ele contém uma grande quantidade de conteúdo de texto duplicado para o propósito deste artigo.

duplicata de gato.txt | ordenar

Existem claramente conteúdos duplicados, certo? Vamos filtrá-los através de “uniq”.

duplicado do gato | sort | uniq

A saída parece tão melhor com apenas os valores únicos, certo?

No entanto, você simplesmente não precisa usar o método de tubulação para fazer o trabalho. “Uniq” pode trabalhar diretamente nos arquivos também.

uniq

Excluindo conteúdo duplicado

Sim, excluir o conteúdo duplicado da entrada e manter apenas a primeira ocorrência é o comportamento padrão do “uniq”. Observe que esta exclusão duplicada só ocorre quando “uniq” encontra itens duplicados simultâneos.

Vamos dar uma olhada neste exemplo. Eu criei outra “duplicata1.txt ”arquivo que contém itens duplicados. No entanto, eles não são adjacentes um ao outro.

bat duplicate1.TXT

Agora, filtre esta saída usando “uniq”.

gato duplicado 1.txt | uniq

Todos os conteúdos duplicados estão lá! É por isso que, se você estiver trabalhando com algo semelhante a isso, canalize o conteúdo por meio de "classificar" para garantir que todos os conteúdos sejam classificados e as duplicatas sejam adjacentes umas às outras.

gato duplicado 1.txt | ordenar

Agora, “uniq” fará seu trabalho normalmente.

gato duplicado 1.txt | sort | uniq

Número de repetições

Se quiser, você pode verificar quantas vezes uma linha é repetida no conteúdo. Basta usar a sinalização “-c” com “uniq”.

duplicata de gato.txt | sort | uniq -c

Nota: “uniq” também fará seu trabalho regular de excluir os duplicados.

Imprimindo linhas duplicadas

Na maioria das vezes, queremos nos livrar das duplicatas, certo? Desta vez, que tal verificar o que é duplicado?

Sim, “uniq” também pode fazer isso. Neste caso, você deve usar a opção “-D”. Usarei "classificar" no meio para obter um resultado melhor e mais refinado.

duplicata de gato.txt | sort | uniq -D

UAU! Isso é um monte de duplicatas! No entanto, todas as duplicatas são agrupadas, dificultando a navegação. Que tal adicionar um pequeno intervalo entre?

uniq --todos repetidos =

Aqui, existem 3 métodos diferentes disponíveis: nenhum (valor padrão), prefixar e separar.

duplicata de gato.txt | sort | uniq --all-repeat = prefix

duplicata de gato.txt | sort | uniq --todos repetidos = separados

Agora parece melhor.

Ignorando verificação de exclusividade

Em muitos casos, a exclusividade deve ser verificada por uma parte diferente da linha.

Vamos entender isso por exemplo. No arquivo duplicate1.txt, digamos que a duplicação é determinada pela segunda parte. Como você diz ao "uniq" para fazer isso? Geralmente, ele verifica o primeiro campo (por padrão). Bem, também podemos fazer isso. Existe este sinalizador “-f” para fazer apenas o trabalho.

uniq -f
gato duplicado 1.txt | sort -k 2 | uniq -f 1

Se você está se perguntando sobre o sinalizador "classificar", é para dizer "classificar" para classificar com base na segunda coluna.

Exibir todas as linhas, mas as duplicatas separadas

De acordo com todos os exemplos mencionados acima, “uniq” apenas mantém a primeira ocorrência do conteúdo duplicado e remove o resto. Que tal remover todo o conteúdo duplicado? Sim, usando o sinalizador “-u”, podemos forçar “uniq” a manter apenas as linhas não repetitivas.

duplicata de gato.txt | ordenar

duplicata de gato.txt | sort | uniq -u

Hmm, muitas duplicatas se foram ..

Pular caracteres iniciais

Discutimos como dizer ao "uniq" para fazer seu trabalho para outros campos, certo? É hora de iniciar a verificação após um número de caracteres iniciais. Para este efeito, o sinalizador “-s” acompanhado do número de caracteres vai dizer ao “uniq” para fazer o trabalho.

gato duplicado 1.txt | sort -k 2 | uniq -s 2

É semelhante ao exemplo em que "uniq" fazia sua tarefa apenas no segundo campo. Vamos ver outro exemplo com este truque.

duplicata de gato.txt | sort | uniq -s 5

Verifique SOMENTE os caracteres iniciais

Assim como dissemos ao “uniq” para pular os primeiros caracteres, também é possível dizer ao “uniq” para limitar a verificação nos primeiros caracteres. Há um sinalizador “-w” dedicado para essa finalidade.

duplicata de gato.txt | sort | uniq -w 5

Este comando diz ao “uniq” para realizar a verificação de exclusividade nos primeiros 5 caracteres.

Vamos ver outro exemplo deste comando.

gato duplicado 1.txt | sort | uniq -w 5

Ele apaga todas as outras instâncias de entradas "duplicadas" porque fez a verificação de exclusividade na parte "dupli".

Não diferenciação de maiúsculas e minúsculas

Ao verificar a exclusividade, "uniq" também verifica as maiúsculas e minúsculas dos caracteres. Em algumas situações, a distinção entre maiúsculas e minúsculas não importa, então podemos usar o sinalizador "-i" para tornar "uniq" insensível a maiúsculas e minúsculas.

Apresento aqui o arquivo de demonstração.

Uma duplicação realmente inteligente com uma mistura de letras maiúsculas e minúsculas, certo? É hora de invocar a força da “uniq” para limpar a bagunça!

gato duplicado 1.txt | sort | uniq -i

Desejo concedido!

Saída terminada em NULL

O comportamento padrão de “uniq” é terminar a saída com uma nova linha. No entanto, a saída também pode ser encerrada com um NULL. Isso é muito útil se você for usá-lo em scripts. Aqui, o sinalizador “-z” é o que faz o trabalho.

duplicata de gato.txt | sort | uniq -z

Combinando vários sinalizadores

Aprendemos várias bandeiras de “uniq”, certo? Que tal combiná-los juntos?

Por exemplo, estou combinando a insensibilidade a maiúsculas e minúsculas e o número de repetições juntos.

Se você está planejando misturar vários sinalizadores, primeiro certifique-se de que eles funcionem juntos da maneira certa. Às vezes, as coisas simplesmente não funcionam como deveriam.

Pensamentos finais

“Uniq” é uma ferramenta única que o Linux oferece. Com tantos recursos poderosos, pode ser útil de várias maneiras. Para a lista de todas as bandeiras e suas explicações, consulte as páginas man e info de “uniq”.

homem uniq

info uniq

Apreciar!

Batalha por Wesnoth 1.13.6 Desenvolvimento lançado
Batalha por Wesnoth 1.13.6 lançado no mês passado, é o sexto lançamento de desenvolvimento no 1.13.série x e oferece uma série de melhorias, principal...
Como instalar o League Of Legends no Ubuntu 14.04
Se você é fã de League of Legends, esta é uma oportunidade para testar o funcionamento de League of Legends. Observe que LOL é suportado no PlayOnLinu...
Instale o último jogo de estratégia OpenRA no Ubuntu Linux
OpenRA é um motor de jogo de estratégia em tempo real Libre / Free que recria os primeiros jogos Westwood como o clássico Command & Conquer: Red Alert...