O comando uniq compara cada linha de entrada com a linha anterior. Ele pode agrupar, contar ou selecionar grupos adjacentes de linhas iguais, mas não pesquisa o arquivo inteiro por duplicatas separadas.
Text-Fu · Lição 14
uniq (Único)
Aprenda a agrupar, contar ou filtrar grupos adjacentes de linhas iguais com uniq.
Agrupamento de Linhas Duplicadas Adjacentes
Suponha que reading.txt contenha valores agrupados:
book
book
paper
paper
article
article
magazine
Execute uniq sem opção de filtro para mostrar uma linha representativa de cada grupo adjacente:
$ uniq reading.txt
book
paper
article
magazine
O arquivo de entrada permanece inalterado, pois o resultado vai para stdout.
O que uniq reading.txt faz por padrão?
Contagem de Grupos Adjacentes
Use -c para prefixar cada grupo de saída com sua quantidade de linhas consecutivas:
$ uniq -c reading.txt
2 book
2 paper
2 article
1 magazine
Essas quantidades representam o tamanho de cada sequência, não os totais globais, a menos que todas as linhas iguais tenham sido agrupadas primeiro.
O que a contagem de uniq -c representa?
Seleção de Grupos Únicos ou Repetidos
Use -u para mostrar apenas os grupos que contêm exatamente uma linha:
$ uniq -u reading.txt
magazine
Use -d para mostrar uma linha representativa de cada grupo adjacente que contém mais de uma:
$ uniq -d reading.txt
book
paper
article
O GNU uniq -D mostra todas as linhas dos grupos repetidos, enquanto -d minúsculo mostra o valor de cada grupo uma vez.
Qual comando mostra apenas os grupos adjacentes que ocorrem exatamente uma vez?
Qual comando mostra uma linha de cada grupo adjacente que aparece mais de uma vez?
Agrupamento de Duplicatas Separadas
Se linhas iguais estiverem separadas, elas formarão grupos diferentes:
book
paper
book
paper
article
magazine
article
Executar uniq nesse arquivo produz um resultado que pode surpreender:
$ uniq reading.txt
book
paper
book
paper
article
magazine
article
Nenhuma linha é agrupada porque os valores vizinhos são diferentes. Ordene primeiro quando a mudança de ordem for aceitável e você quiser reunir linhas completas iguais:
$ sort reading.txt | uniq
article
book
magazine
paper
Use um locale e uma política de comparação consistentes nas duas etapas. sort -u reading.txt também pode ordenar e preservar uma linha para cada chave igual em um único comando.
Linhas iguais estão espalhadas por reading.txt, e a ordem da saída pode mudar. Qual pipeline produz uma cópia ordenada de cada linha completa distinta?
uniq lê stdin quando nenhum arquivo de entrada é indicado, motivo pelo qual se encaixa naturalmente depois de sort. Opções GNU como -i podem ignorar maiúsculas e minúsculas, enquanto -f, -s e -w podem ignorar ou limitar regiões de comparação; use-as apenas quando a igualdade deva ser definida por parte de cada linha.
Para praticar o agrupamento, a contagem e a filtragem de duplicatas, experimente estes laboratórios:
- Comando uniq do Linux: Filtragem de Duplicatas — Aprenda a combinar
uniqcomsortpara identificar, filtrar e analisar linhas duplicadas. - Comando sort do Linux: Ordenação de Texto — Pratique a organização de linhas com
sort, uma etapa importante antes do uso eficaz deuniq. - Contagem e Ordenação de Palavras — Aprenda as ferramentas essenciais de processamento de texto do Linux
wc(contagem de palavras) esortneste desafio prático. Aprenda a contar linhas, palavras e caracteres, encontrar padrões frequentes e ordenar dados com eficiência em várias tarefas de análise de texto.
Lição concluída
Você concluiu uniq (Único)
Agora você sabe analisar grupos adjacentes de linhas iguais com uniq.
Agrupe cada grupo adjacente duplicado em uma linha.
Conte ocorrências consecutivas com
-c.Selecione grupos únicos com
-u.Selecione grupos repetidos com
-dou-Ddo GNU.Ordene primeiro quando duplicatas separadas precisarem ser agrupadas.
Salve seu progresso
Crie uma conta gratuita para salvar esta lição e continuar em qualquer dispositivo.
Criar uma conta gratuita