Como usar o comando look no Linux

O comando look do Linux percorre um arquivo e lista todas as linhas que começam com uma palavra ou frase específica. Mas cuidado! Ele se comporta de maneira diferente em diferentes distribuições do Linux. Este tutorial mostrará como usá-lo.

O comando do visual do Ubuntu se comporta de maneira diferente

Para um comando simples, mas útil, look certamente me confundiu quando estava pesquisando para este artigo. Havia dois problemas: compatibilidade e documentação.

Este artigo foi verificado usando Ubuntu, Fedora e Manjaro. O look veio junto com cada uma dessas distribuições, o que foi ótimo. O problema era que o comportamento não era o mesmo nos três. A versão do Ubuntu era muito diferente. De acordo com Manpages do Ubuntu, o comportamento deve ser o mesmo.

Eu finalmente descobri. olhar tradicionalmente usa um busca binária, enquanto a aparência do Ubuntu usa um busca linear. As man pages online do Ubuntu para Bionic Beaver (18.04), Cosmic Cuttlefish (18.10) e Disco Dingo (19.04) dizem que a versão Ubuntu usa uma pesquisa binária, o que não é o caso.

Se dermos uma olhada na página de manual local do Ubuntu, vemos que afirma claramente que sua aparência usa uma pesquisa linear. Existe uma opção de linha de comando para forçá-lo a usar uma pesquisa binária. Nenhuma das versões nas outras distribuições tem a opção de escolher entre os métodos de pesquisa.

man look

Percorrendo a página do manual, vemos a seção que descreve esta versão de aparência usando uma pesquisa linear em vez de binária.

  Como compactar imagens no Linux com Curtail

A moral da história é verificar as páginas de manual locais primeiro.

Pesquisa linear versus pesquisa binária

O método de pesquisa binária é mais rápido e eficiente do que uma pesquisa linear. Trabalhar com arquivos grandes torna isso muito aparente. A desvantagem da pesquisa binária é que seu arquivo deve ser classificado. Se você não quiser classificar seu arquivo, classifique uma cópia dele e use-a com o look.

Vamos demonstrar isso em outro lugar neste artigo. Esteja ciente de que no Fedora, Manjaro e, provavelmente, no restante do mundo Linux, você precisará criar uma cópia classificada do seu arquivo e trabalhar com ela.

Instalando palavras

look pode funcionar com qualquer arquivo de texto que você escolher, ou pode funcionar com o arquivo de dicionário local “palavras”.

No Manjaro você precisa instalar o arquivo “palavras”. Use este comando:

sudo pacman -Syu words

Usando look

Para este artigo, trabalharemos com um arquivo de texto do Edward Lear poema “The Jumblies”.

Vejamos seu conteúdo com este comando:

less the-jumblies.txt

Aqui está a primeira parte do poema. Observe que estamos usando o Ubuntu, portanto, o arquivo permanece sem classificação. Para Fedora e Manjaro, trabalharíamos com uma cópia classificada do arquivo, que abordaremos posteriormente neste artigo.

  3 maneiras de proteger um servidor SSH no Linux

Se procurarmos por linhas que começam com a palavra “Eles”, descobriremos um pouco do que os Jumblies fizeram.

look They the-jumblies.txt

look responde listando estas linhas:

Saída de

Ignorando maiúsculas e minúsculas

Para fazer com que a aparência ignore as diferenças entre maiúsculas e minúsculas, use a opção -f (ignorar maiúsculas e minúsculas). Usamos “they” como a palavra de pesquisa novamente, mas desta vez, está em letras minúsculas.

look -f they the-jumblies.txt

Desta vez, os resultados incluem uma linha extra.

Saída de

A linha que começa com “ELES” foi perdida no último conjunto de resultados porque está em letras maiúsculas e não corresponde ao nosso termo de pesquisa, “Eles”.

Ignorar maiúsculas e minúsculas permite que o look inclua nos resultados.

Usando a aparência com um arquivo classificado

Se sua distribuição Linux tem uma versão de aparência que segue o comportamento tradicional de usar uma pesquisa binária, você deve classificar seu arquivo ou trabalhar com uma cópia classificada dele.

Vamos repetir o comando para procurar “Eles”, mas desta vez em Manjaro.

Como você pode ver, nenhum resultado foi retornado. Mas sabemos que há versos no poema que começam com a palavra “Eles”.

Vamos fazer uma cópia ordenada do arquivo. Se for usar as opções -f (ignorar maiúsculas e minúsculas) ou -d (caracteres alfanuméricos e espaços apenas) com look, você deve usá-las ao classificar o arquivo.

A opção -o (saída) permite que você especifique o nome do arquivo ao qual as linhas classificadas devem ser adicionadas. Neste exemplo, é “ordenado.txt”.

sort -f -d the-jumblies.txt -o sorted.txt

Vamos examinar o arquivo Sort.txt e, em seguida, usar as opções -f e -d.

  Como excluir arquivos com segurança no Linux

Agora, obtemos os resultados que esperávamos.

Considere apenas espaços e alfanuméricos

Para fazer parecer ignorar qualquer coisa que não seja um Caractere alfanumerico ou um espaço, use a opção -d (alfanumérico).

Vamos ver se há alguma palavra que comece com “Oh”.

look -f oh the-jumblies.txt

Nenhum resultado é retornado pela aparência.

Vamos tentar novamente e dizer ao look para ignorar qualquer coisa que não seja caracteres alfanuméricos e espaços. Isso significa que caracteres e símbolos, como pontuação, serão ignorados.

look -f -d oh the-jumblies.txt

Desta vez, obtemos um resultado. Não encontramos essa linha antes porque as aspas e o ponto de exclamação confundiram a pesquisa.

Saída de

Especificando o caractere de terminação

Você pode dizer ao look para usar um caractere específico como caractere de terminação. Normalmente, espaços e finais de linhas são usados ​​como caractere de terminação.

A opção -t (encerrar caractere) nos permite especificar o caractere que gostaríamos de usar. Neste exemplo, vamos usar o caractere apóstrofo. Precisamos citá-lo com uma barra invertida para que a aparência saiba que não estamos abrindo uma string.

Também citamos o termo de pesquisa porque inclui um espaço. Estamos procurando por duas palavras.

look -f -t ' "they call" the-jumblies.txt

Os resultados correspondem ao termo de pesquisa, terminado pelo apóstrofo que usamos como caractere de terminação.

Usando o look sem um arquivo

Se você não fornecer um nome de arquivo na linha de comando, olhe usa o arquivo de palavras.

O comando:

dá estes resultados:

Essas são todas as palavras do arquivo que começam com a palavra “círculo”.

não procure mais

Isso é tudo que há para olhar.

É muito fácil, uma vez que você sabe que existem diferentes comportamentos em diferentes distribuições do Linux, e você concluiu se sua versão usa uma pesquisa binária ou linear.