O uniq
comando do Linux percorre seus arquivos de texto em busca de linhas exclusivas ou duplicadas. Neste guia, cobrimos sua versatilidade e recursos, bem como como você pode aproveitar ao máximo esse utilitário bacana.
Índice
O uniq
comando é rápido, flexível e ótimo no que faz . No entanto, como muitos comandos do Linux, ele tem algumas peculiaridades – o que é bom, contanto que você as conheça. Se você mergulhar sem um pouco de know-how interno, pode muito bem ficar coçando a cabeça com os resultados. Iremos apontar essas peculiaridades à medida que avançamos.
O uniq
comando é perfeito para aqueles no campo obstinado, projetado para fazer uma coisa e fazer bem. É por isso que também é particularmente adequado para trabalhar com tubos e desempenhar seu papel em canais de comando. Um de seus colaboradores mais frequentes é sort
porque uniq
tem que ter dados classificados para trabalhar.
Vamos acender!
Temos um arquivo de texto que contém a letra de Robert Johnson canção Acho que vou poeira minha vassoura . Vamos ver o uniq
que acontece.
Vamos digitar o seguinte para canalizar a saída para less
:
uniq dust-my-broom.txt | Menos
Obtemos a música inteira, incluindo linhas duplicadas, em less
:
Não parecem ser as linhas únicas nem as linhas duplicadas.
Certo – porque esta é a primeira peculiaridade. Se você executar uniq
sem opções, ele se comportará como se você tivesse usado a opção -u
(linhas exclusivas). Isso informa uniq
para imprimir apenas as linhas exclusivas do arquivo. A razão de você ver linhas duplicadas é porque, para uniq
considerar uma linha uma duplicata, ela deve ser adjacente a sua duplicata, que é onde sort
entra.
Quando classificamos o arquivo, ele agrupa as linhas duplicadas e as uniq
trata como duplicatas. Usaremos sort
no arquivo, direcionaremos a saída classificada para uniq
e, em seguida, direcionaremos a saída final para less
.
Para fazer isso, digitamos o seguinte:
sort dust-my-broom.txt | uniq | Menos
Uma lista classificada de linhas aparece em less
.
A frase, “Eu acredito que vou tirar o pó da minha vassoura”, definitivamente aparece na música mais de uma vez. Na verdade, é repetido duas vezes nas primeiras quatro linhas da música.
Então, por que ele está aparecendo em uma lista de linhas exclusivas? Porque a primeira vez que uma linha aparece no arquivo, ela é única; apenas as entradas subsequentes são duplicadas. Você pode pensar nisso como uma lista da primeira ocorrência de cada linha exclusiva.
Vamos usar sort
novamente e redirecionar a saída para um novo arquivo. Dessa forma, não precisamos usar sort
em todos os comandos.
Nós digitamos o seguinte comando:
sort dust-my-broom.txt> Sort.txt
Agora, temos um arquivo pré-classificado para trabalhar.
Você pode usar a -c
opção (contagem) para imprimir o número de vezes que cada linha aparece em um arquivo.
Digite o seguinte comando:
uniq -c Sort.txt | Menos
Cada linha começa com o número de vezes que essa linha aparece no arquivo. No entanto, você notará que a primeira linha está em branco. Isso indica que há cinco linhas em branco no arquivo.
Se quiser que a saída seja classificada em ordem numérica, você pode alimentar a saída de uniq
em sort
. Em nosso exemplo, usaremos as opções -r
(reverso) e -n
(classificação numérica) e direcionaremos os resultados para less
.
Nós digitamos o seguinte:
uniq -c Sort.txt | sort -rn | Menos
A lista é classificada em ordem decrescente com base na frequência de aparecimento de cada linha.
Se quiser ver apenas as linhas que se repetem em um arquivo, você pode usar a -d
opção (repetido). Não importa quantas vezes uma linha seja duplicada em um arquivo, ela é listada apenas uma vez.
Para usar esta opção, digitamos o seguinte:
uniq -d Sort.txt
As linhas duplicadas são listadas para nós. Você notará a linha em branco no topo, o que significa que o arquivo contém linhas em branco duplicadas – não é um espaço deixado uniq
para compensar cosmeticamente a listagem.
Também podemos combinar as opções -d
(repetido) e -c
(contagem) e canalizar a saída sort
. Isso nos dá uma lista classificada das linhas que aparecem pelo menos duas vezes.
Digite o seguinte para usar esta opção:
uniq -d -c Sort.txt | sort -rn
Se você quiser ver uma lista de todas as linhas duplicadas, bem como uma entrada para cada vez que uma linha aparecer no arquivo, você pode usar a opção -D
(todas as linhas duplicadas).
Para usar esta opção, você digita o seguinte:
uniq -D Sort.txt | Menos
A lista contém uma entrada para cada linha duplicada.
Se você usar a --group
opção, ele imprimirá todas as linhas duplicadas com uma linha em branco antes ( prepend
) ou depois de cada grupo ( append
), ou antes e depois ( both
) de cada grupo.
Estamos usando append
como nosso modificador, então digitamos o seguinte:
uniq --group = append Sort.txt | Menos
Os grupos são separados por linhas em branco para facilitar a leitura.
Por padrão, uniq
verifica todo o comprimento de cada linha. Se você quiser restringir as verificações a um certo número de caracteres, no entanto, você pode usar a opção -w
(verificar caracteres).
Neste exemplo, repetiremos o último comando, mas limitaremos as comparações aos três primeiros caracteres. Para fazer isso, digitamos o seguinte comando:
uniq -w 3 --group = append Sort.txt | Menos
Os resultados e agrupamentos que recebemos são bastante diferentes.
Todas as linhas que começam com “I b” são agrupadas porque essas partes das linhas são idênticas, portanto, são consideradas duplicatas.
Da mesma forma, todas as linhas que começam com “I’m” são tratadas como duplicatas, mesmo se o resto do texto for diferente.
Existem alguns casos em que pode ser benéfico pular um certo número de caracteres no início de cada linha, como quando as linhas de um arquivo são numeradas. Ou, digamos que você precise uniq
pular um carimbo de data / hora e começar a verificar as linhas do caractere seis, em vez do primeiro caractere.
Abaixo está uma versão de nosso arquivo classificado com linhas numeradas.
Se quisermos uniq
iniciar suas verificações de comparação no caractere três, podemos usar a opção -s
(pular caracteres) digitando o seguinte:
uniq -s 3 -d -c numbered.txt
As linhas são detectadas como duplicatas e contadas corretamente. Observe que os números das linhas exibidos são os da primeira ocorrência de cada duplicata.
Você também pode pular campos (uma série de caracteres e alguns espaços em branco) em vez de caracteres. Usaremos a -f
opção (campos) para informar uniq
quais campos ignorar.
Digitamos o seguinte para informar uniq
para ignorar o primeiro campo:
uniq -f 1 -d -c numbered.txt
Obtemos os mesmos resultados que obtivemos quando pedimos uniq
para pular três caracteres no início de cada linha.
Por padrão, uniq
diferencia maiúsculas de minúsculas. Se a mesma letra aparecer em maiúsculas e em minúsculas, uniq
considera as linhas como diferentes.
Por exemplo, verifique a saída do seguinte comando:
uniq -d -c Sort.txt | sort -rn
As linhas “Acredito que vou tirar o pó da minha vassoura” e “Acho que vou tirar o pó da minha vassoura” não são tratadas como duplicatas devido à diferença de maiúsculas e minúsculas no “B” em “acreditar”.
Se incluirmos a opção -i
(ignorar maiúsculas e minúsculas), entretanto, essas linhas serão tratadas como duplicatas. Nós digitamos o seguinte:
uniq -d -c -i Sort.txt | sort -rn
As linhas agora são tratadas como duplicatas e agrupadas.
O Linux coloca uma infinidade de utilitários especiais à sua disposição. Como muitos deles, uniq
não é uma ferramenta que você usará todos os dias.
É por isso que grande parte de se tornar proficiente em Linux é lembrar qual ferramenta resolverá seu problema atual e onde você pode encontrá-la novamente. Porém, se você praticar, estará no caminho certo.
Ou você pode apenas pesquisar How-To Geek – provavelmente temos um artigo sobre ele.
Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…
Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…
A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…
A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…
O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…
Para ver suas fotos mais de perto ou para uma edição precisa , você pode…