Neste artigo
Linux (e seu predecessor, Unix) foi construído em texto simples. Como resultado, ele possui todos os tipos de ferramentas úteis de processamento de texto que você pode usar no terminal. O utilitário Linux uniq foi projetado para ajudá-lo a classificar os arquivos de texto em busca de valores exclusivos.
O que é Linux uniq e quando você o usaria?
O uniq comando vem instalado na maioria das distribuições Linux fora da caixa e pertence ao pacote coreutils. É usado para identificar e ‘recolher’ linhas de texto idêntico adjacente. Vamos descompactar um pouco essa definição.
- A unidade básica de comparação é uma linha de texto, ou seja, todo o texto de uma linha retorna até a próxima. Isso pode incluir várias frases, desde que estejam no mesmo parágrafo.
- Por padrão, uniq compara apenas linhas adjacentes. Isso significa que se duas linhas forem exatamente iguais, mas houver uma diferente entre elas, elas serão consideradas diferentes, a menos que você aplique algumas opções diferentes ao comando (mais sobre isso mais tarde).
- Neste contexto, “recolher” significa que o uniq exibe sua saída, apenas incluirá a primeira ocorrência da linha.
O comando uniq ajuda a filtrar muitos dados, identificar quais linhas são iguais e removê-las da saída.
Uso Básico do Comando Linux uniq
Em um nível básico, o uso do comando uniq do Linux é o seguinte: uniq -o = valor / caminho / para / arquivo de entrada
class = “ql-syntax”> Aqui, o “o” acima representa o sinalizador abreviado para uma de suas opções. Você também pode inserir isso em sua forma mais longa, como: uniq –option = value / path / to / inputfile
class = “ql-syntax”> O “inputfile” deve ser um arquivo de texto simples contendo seus dados. Existem muitas opções para o comando uniqu no Linux, mas pode não ser óbvio como você pode usar essas opções fornecem resultados úteis. Vamos nos aprofundar em alguns deles nas seções a seguir.
Removendo Duplicatas Adjacentes com o Comando uniq
Em sua forma mais básica, o comando uniq ‘recolherá’ duplicatas adjacentes e exibirá os resultados. Por exemplo, digamos que você esteja começando um novo blog e tenha uma lista de pessoas que se inscreveram para receber seu boletim informativo por e-mail (newsletter.txt), mas ainda não são membros. Jsmith@example.com
Jsmith@example.com
Tmiller@example.com
Mjones@example.com
Mjones@example.com
Já que você não gostaria de incomodar essas pessoas mais de uma vez, você pode eliminar a duplicação com o seguinte: $ uniq newsletter.txt
Jsmith@example.com
Tmiller@example.com
Mjones@example.com
É certo que isso por si só não é muito empolgante. Se uma terceira ocorrência de “Jsmith@example.com” existisse no final do arquivo, ela permaneceria. Portanto, é importante aprender algumas das opções desse comando.
Contando o número de ocorrências com uniq
Vamos supor que o seu blog decole e não apenas as pessoas estão se registrando, mas também se inscrevendo! Por dinheiro! E por que não? A lista de pagamentos que você está recebendo começará a aumentar. Smith John Jsmith@example.com $ 3,00
Smith John Jsmith@example.com $ 3,00
Smith John Jsmith@example.com $ 3,00
Smith John Jsmith@example.com $ 3,00
Smith John Jsmith@example.com $ 3,00
Smith John Jsmith@example.com $ 3,00
Smith John Jsmith@example.com $ 3,00
Smith John Jsmith@example.com $ 3,00
Peters Aaron Apeters@example.com $ 10,00
Peters Aaron Apeters@example.com $ 10,00
Peters Aaron Apeters@example.com $ 10,00
Miller Tim Tmiller@example.com $ 1,00
Miller Tim Tmiller@example.com $ 1,00
Miller Tim Tmiller@example.com $ 1,00
Miller Tim Tmiller@example.com $ 1,00
Miller Tim Tmiller@example.com $ 1,00
Miller Tim Tmiller@example.com $ 1,00
Jones Mary Mjones@example.com $ 5,00
Jones Mary Mjones@example.com $ 5,00
Jones Mary Mjones@example.com $ 5,00
Jones Mary Mjones@example.com $ 5,00
Jones Fred Fjones@example.com $ 4,00
Jones Fred Fjones@example.com $ 4,00
Jones Fred Fjones@example.com $ 4,00
Jones Fred Fjones@example.com $ 4,00
Jones Fred Fjones@example.com $ 4,00
Em algum momento, você vai querer avaliar há quanto tempo alguns de seus assinantes estão com você. Dada a lista acima de seus pagamentos até o momento, você pode ter uniq conte o número de ocorrências com o -c sinalizador: $ uniq -c payments.txt
8 Smith John Jsmith@example.com $ 3,00
3 Peters Aaron Apeters@example.com $ 10,00
6 Miller Tim Tmiller@example.com $ 1,00
4 Jones Mary Mjones@example.com $ 5,00
5 Jones Fred Fjones@example.com $ 4,00
No entanto, isso novamente depende de as linhas serem adjacentes … se houvesse alguma que não fosse, haveria duplicatas na saída do programa que foi projetado para eliminar a duplicação! Por esta razão, uniq é mais útil quando usado em conjunto com o ordenar comando.
Exibindo linhas exclusivas com comandos sort e uniq
O comando sort nos ajuda aqui, pois irá organizar linhas duplicadas para que estão adjacente, permitindo assim uniq para filtrá-los. Por exemplo, imagine que o relatório de pagamento acima não tenha sido bem solicitado: Smith John Jsmith@example.com $ 3,00
Jones Fred Fjones@example.com $ 4,00
Miller Tim Tmiller@example.com $ 1,00
Peters Aaron Apeters@example.com $ 10,00
Jones Mary Mjones@example.com $ 5,00
Peters Aaron Apeters@example.com $ 10,00
Miller Tim Tmiller@example.com $ 1,00
Jones Fred Fjones@example.com $ 4,00
Smith John Jsmith@example.com $ 3,00
Jones Fred Fjones@example.com $ 4,00
Peters Aaron Apeters@example.com $ 10,00
Jones Fred Fjones@example.com $ 4,00
Jones Fred Fjones@example.com $ 4,00
Miller Tim Tmiller@example.com $ 1,00
Jones Mary Mjones@example.com $ 5,00
Smith John Jsmith@example.com $ 3,00
Miller Tim Tmiller@example.com $ 1,00
Smith John Jsmith@example.com $ 3,00
Smith John Jsmith@example.com $ 3,00
Smith John Jsmith@example.com $ 3,00
Smith John Jsmith@example.com $ 3,00
Jones Mary Mjones@example.com $ 5,00
Jones Mary Mjones@example.com $ 5,00
Miller Tim Tmiller@example.com $ 1,00
Miller Tim Tmiller@example.com $ 1,00
Smith John Jsmith@example.com $ 3,00
Neste caso, você deseja primeiro percorrer esta lista ordenar para agrupar todos os itens semelhantes, em seguida, execute uniq. Isso usa o tubo operador na linha de comando (“|”), onde os resultados do comando antes do tubo são alimentados diretamente no segundo comando. Portanto, quando executamos isso em nossos pagamentos mistos, obtemos os resultados exclusivos (com sua contagem): $ sort payments-rand.txt | uniq -c
5 Jones Fred Fjones@example.com $ 4,00
4 Jones Mary Mjones@example.com $ 5,00
6 Miller Tim Tmiller@example.com $ 1,00
3 Peters Aaron Apeters@example.com $ 10,00
8 Smith John Jsmith@example.com $ 3,00
Use o Comando uniq para Análise Rápida de Dados
Conforme você se familiariza com a linha de comando do Linux, encontrará vários programas úteis como o uniq. Claro, você poderia abrir o item acima no Excel e classificar dessa forma, mas não começaria a ganhar nenhum crédito de tecnologia, começaria?