Tecnicamente, o ack foi projetado como ferramenta de busca dentro de arquivos texto — tendo como público-alvo os programadores.
Entre estes, o utilitário é mais eficiente do que o comando grep.
Neste texto, vou mostrar algumas vantagens de uso do ack e como instalar a ferramenta no Linux (caso ela já não esteja instalada aí).
Entre as vantagens de usar o ack — para fazer pesquisa dentro do código fonte — a documentação oficial cita:
- É rápido — por que se restringe a strings que “façam sentido” retornar. As expressões regulares em Perl tem alto índice de otimização.
- É portável — por ser escrito em Perl e não ter outras dependências além do Perl 5, pode rodar no Windows, MAC, UNIX e nos vários sabores do BSD e do Linux.
- Ignora automaticamente diretórios irrelevantes para a sua busca — a recursividade é seu comportamento padrão, mas ele ignora arquivos .git, .svn e diretórios CVS e VCS. Lógico que você pode mudar isto manualmente.
Como exemplo da praticidade, a documentação compara os dois comandos de busca, a seguir, que tem resultados semelhantes:grep pattern $(find . -type f | grep -v '\.git')
ou
ack pattern
Qual você prefere?
- Melhores resultados — como ele prioriza arquivos de código fonte, você obtém menos resultados irrelevantes. Ele pula até arquivos de backup.
- Separa fácil os arquivos — para quem tem um projeto envolvendo mais de uma linguagem de programação (muito comum entre web developers).
É fácil adicionar –python, para restringir as buscas dentro de arquivos da linguagem Python, ou –nohtml evitar arquivos HTML.O ack tem detecção de tipos de arquivos, muito além da leitura da extensão do nome.
Veja outra comparação entre comandos grep e ack, para realizar buscas dentro de arquivos Perl:
grep pattern $(find . -name '*.pl' -or -name '*.pm' -or -name '*.pod' | grep -v .git)
ack --perl pattern
Novamente, qual dos dois comandos, acima, você prefere usar?
Note que o sucesso do grep, no primeiro exemplo, depende do uso do comando find (leia mais sobre ele aqui). O ack é visivelmente mais eficiente, neste caso. - Listas de arquivos — podem ser criadas, antes mesmo de qualquer busca.
Esta utilidade vai agradar até quem não é programador. Com o comando, abaixo, o ack relaciona todos os arquivos da linguagem PHP, em um diretório, recursivamente:ack -f --php
Você gastaria um pouco mais de seus dedos para realizar esta tarefa com o find…
- O ack tem highlighting, que permite realçar palavras-chave nos resultados das buscas.
Por fim, A palavra “ack” é menor do que “grep”, o que te poupa alguns preciosos milésimos de segundos na digitação a cada vez que precisar realizar uma busca.
Como instalar o ack no sistema
O ack está disponível nos repositórios das principais distribuições (se não todas) Linux e UNIX (BSD).
Infelizmente, no momento em que escrevo este texto, ele ainda não faz parte do conjunto de programas utilitários padrão, que já “estão lá”, logo após a instalação.
Contudo, ele é super fácil de instalar.
Quem usa o Debian, pode usar o apt, para fazer o trabalho:
sudo apt update sudo apt install ack
No Ubuntu 16.04 LTS, o nome do pacote (transitório) é ack-grep. Nas futuras atualizações ele deve ser renomeado para apenas “ack”.
O pessoal do Fedora, pode instalar com o dnf:
sudo dnf install ack
No FreeBSD, use os ports e instale o pacote p5-ack.
Leia outros textos sobre o assunto, tocando ou clicando na tag ack, para conhecer melhor a ferramenta.
Além disto, não esqueça de compartilhar o texto nas redes sociais. 😉
Referências
https://beyondgrep.com/.
http://www.activestate.com/blog/2016/12/grep-losing-its-grip.
One reply on “Conheça estes 7 motivos para abandonar o comando grep e passar a usar o ack.”
faço tudo que preciso com o grep.
para pesquisas complexas uso awk e sed.