Comando Linux uniq
Em sistemas operacionais do tipo Unix, o comando uniq relata ou filtra linhas repetidas em um arquivo.
Esta página cobre a versão GNU \/Linux do uniq.
Descrição
O uniq filtra as linhas adjacentes e correspondentes do arquivo de entrada INPUT, gravando os dados filtrados no arquivo de saída OUTPUT. Uma linha correspondente é “adjacente” se for imediatamente antes ou depois de outra linha correspondente.
Por exemplo, considere um arquivo fruits.txt com as seguintes linhas de texto:
apple apple apple pear apple pear pear
Se você executar uniq nessas linhas de texto, todas as linhas que corresponderem a uma linha adjacente serão omitidas:
uniq fruits.txt
apple pear apple pear
Sintaxe
uniq [OPTION]... [INPUT [OUTPUT]]
Opções
-c, –count |
Prefixe as linhas com um número que representa quantas vezes elas ocorreram. | ||||||
-d, –repetido |
Imprima apenas linhas duplicadas. | ||||||
-D, |
Imprima todas as linhas duplicadas. delimit-method pode ser um dos seguintes:
A opção -D é o mesmo que especificar –all-repeat = none. |
||||||
-f N, –skip-fields = N |
Evite comparar os primeiros N campos de uma linha antes de determinar a exclusividade. Um campo é um grupo de caracteres, delimitado por espaços em branco.
Esta opção é útil, por exemplo, se as linhas do seu documento são numeradas e você deseja comparar tudo na linha, exceto o número da linha. Se a opção -f 1 for especificada, as linhas adjacentes 1 This is a line. 2 This is a line. seriam considerados idênticos. Se nenhuma opção -f for especificada, eles serão considerados exclusivos. |
||||||
-i, –ignore-case |
Normalmente, as comparações diferenciam maiúsculas de minúsculas. Em vez disso, esta opção executa comparações que não diferenciam maiúsculas de minúsculas. | ||||||
-s N, –skip-chars = N |
Evite comparar os primeiros N caracteres de cada linha ao determinar a exclusividade. É como a opção -f, mas pula caracteres individuais em vez de campos. | ||||||
-u, –unique |
Imprima apenas linhas exclusivas. | ||||||
-z, –zero-terminado |
Terminar linhas com 0 byte (nulo), em vez de uma nova linha. | ||||||
-w, –check-chars = N |
Compare no máximo N caracteres nas linhas. | ||||||
–ajuda | Exiba uma mensagem de ajuda e saia. | ||||||
–versão | Informações de versão de saída e saída. |
Notas
Se INPUT não for especificado, o uniq lê a partir da entrada padrão.
Se OUTPUT não for especificado, uniq grava na saída padrão.
Se nenhuma opção for especificada, as linhas correspondentes serão mescladas na primeira ocorrência.
O uniq não detecta linhas repetidas a menos que sejam adjacentes. Se você quiser omitir TODAS as ocorrências de linhas idênticas, classifique a entrada primeiro ou use sort -u em vez de uniq.
Exemplos
Nos exemplos a seguir, temos um arquivo de texto, myfruit.txt, com cinco linhas de texto:
I have an apple. I have an apple. I also have two pears. I have an apple. I have three fruits total.
Aqui estão várias maneiras de executar uniq neste arquivo para omitir linhas repetidas.
Se as linhas adjacentes forem idênticas, exibe a linha uma vez
uniq myfruit.txt
I have an apple. I also have two pears. I have an apple. I have three fruits total.
O mesmo que acima, mas prefixe cada linha com o número de vezes repetidas
uniq -c myfruit.txt
2 I have an apple. 1 I also have two pears. 1 I have an apple. 1 I have three fruits total.
Mostrar apenas duplicatas (linhas idênticas adjacentes)
uniq -d myfruit.txt
I have an apple.
Mostrar apenas linhas exclusivas (sem linhas idênticas adjacentes)
uniq -u myfruit.txt
I also have two pears. I have an apple. I have three fruits total.
Classifique as linhas em ordem alfabética
O comando sort classifica as linhas do texto em ordem alfabética.
sort myfruit.txt
I also have two pears. I have an apple. I have an apple. I have an apple. I have three fruits total.
Agora todas as linhas idênticas são adjacentes.
Mostrar linhas únicas apenas uma vez
A saída de classificação pode ser canalizada para uniq. Como a entrada é classificada, todas as linhas idênticas serão adjacentes. Como resultado, todas as linhas idênticas no arquivo são exibidas apenas uma vez.
sort myfruit.txt | uniq
I also have two pears. I have an apple. I have three fruits total.
O mesmo resultado pode ser obtido executando sort -u.
sort -u myfruit.txt
I also have two pears. I have an apple. I have three fruits total.
Comandos relacionados
comm – Compare dois arquivos classificados linha por linha.
pack – Compactar arquivos usando um algoritmo de Huffman.
pcat – Imprime o conteúdo descompactado de um arquivo compactado.
sort – Classifique as linhas em um arquivo de texto.
descompactar – Extraia arquivos de arquivos compactados.
0 Comments