O look
comando 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 Linux. Este tutorial mostrará como usá-lo.
Índice
O comando do visual do Ubuntu se comporta de maneira diferente
Para um comando simples, mas útil, look
certamente me deixou confuso quando estava pesquisando este artigo. Havia dois problemas: compatibilidade e documentação.
Este artigo foi verificado usando Ubuntu, Fedora e Manjaro. look
foi fornecido 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 o Ubuntu Manpages , o comportamento deve ser o mesmo.
Eu finalmente descobri. look
tradicionalmente usa uma pesquisa binária , enquanto o Ubuntu look
usa uma pesquisa 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 ela afirma claramente que look
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.
homem olha
Percorrendo a página do manual, vemos a seção que descreve esta versão do look
uso de uma pesquisa linear em vez de binária.
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 look
.
Vamos demonstrar isso em outro lugar neste artigo. Esteja ciente de que no Fedora, Manjaro, e espero que a maior parte do resto do mundo Linux, você precisará criar uma cópia ordenada do seu arquivo e trabalhar com isso.
Instalando palavras
look
pode funcionar com qualquer arquivo de texto de sua escolha ou com o arquivo de dicionário local “palavras”.
No Manjaro você precisa instalar o arquivo “palavras”. Use este comando:
sudo pacman -Syu palavras
Usando look
Para este artigo, trabalharemos com um arquivo de texto do poema de Edward Lear “The Jumblies”.
Vejamos seu conteúdo com este comando:
menos the-jumblies.txt
Aqui está a primeira parte do poema. Observe que estamos usando o Ubuntu, então o arquivo permanece sem classificação. Para Fedora e Manjaro, trabalharíamos com uma cópia ordenada do arquivo, que abordaremos posteriormente neste artigo.
Se procurarmos por linhas que começam com a palavra “Eles”, descobriremos um pouco do que os Jumblies fizeram.
olhe para eles o-jumblies.txt
look
responde listando estas linhas:
Ignorando maiúsculas e minúsculas
Para look
ignorar 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.
olhe-se eles o-jumblies.txt
Desta vez, os resultados incluem uma linha extra.
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 look
incluí-lo nos resultados.
Usando aparência com um arquivo classificado
Se sua distribuição Linux tiver uma versão look
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á-los ao classificar o arquivo.
A -o
opçã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 Sort.txt
Vamos usar look
no arquivo Sort.txt e, em seguida, usar as opções -f
e -d
.
Agora, obtemos os resultados que esperávamos.
Considere apenas espaços e alfanuméricos
Para fazer com que a aparência ignore qualquer coisa que não seja um caractere alfanumérico ou um espaço, use a -d
opção (alfanumérico).
Vamos ver se há alguma palavra que comece com “Oh”.
look -f oh the-jumblies.txt
Nenhum resultado é retornado por look
.
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.
Especificando o caractere final
Você pode dizer 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 sabermos que look
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 \ '"eles chamam de" 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, use 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 fazer look
.
É 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.