| Author: Eduardo Enriquez

Rest In Peace Grep (RipGrep): una search tool para dominar todas las b煤squedas o de por qu茅 debemos dar muerte a grep, ack o silver search

Si todav铆a usas grep para buscar cadena de texto, estas en la era de las cavernas, si usas ack pasate a la siguente era,聽la聽de piedra. Pero si en cambio estas usando聽Silver Search se podr铆a decir que ya estas en la edad moderna, pero tal vez debes darle una oportunidad al futuro:聽Ripgrep, una search tool hecha en rust y programada con automatas finitos.

La cosa es as铆, estaba usando ack-grep (https://beyondgrep.com/) una tool hecha en Perl para buscar en tu c贸digo especificando qu茅 tipo de archivos queres buscar y cu谩l carpetas ignorar. Adem谩s el output era en colores y me decia la linea y el archivo facilmente.聽

acl

Estaba contento. Pero me comentaron que ack no estaba muy bueno y que habia algo que era MUCHO mejor,聽sobre RipGrep (https://github.com/BurntSushi/ripgrep) y una tablita de tiempos sorprendete:

Tool Command Line count Time
ripgrep (Unicode) rg -n -w '[A-Z]+_SUSPEND' 450 0.106s
git grep LC_ALL=C git grep -E -n -w '[A-Z]+_SUSPEND' 450 0.553s
The Silver Searcher ag -w '[A-Z]+_SUSPEND' 450 0.589s
git grep (Unicode) LC_ALL=en_US.UTF-8 git grep -E -n -w '[A-Z]+_SUSPEND' 450 2.266s
sift sift --git -n -w '[A-Z]+_SUSPEND' 450 3.505s
ack ack -w '[A-Z]+_SUSPEND' 1878 6.823s
The Platinum Searcher pt -w -e '[A-Z]+_SUSPEND' 450 14.208s

Basicamente la tabla fue marketinera, ripgrep era infinitamente m谩s r谩pida que todas las otras. Empec茅 a usarla tool y la verdad que est谩 muy buena. Si tenes un gitignore lo toma en cuenta y adem谩s hace lo del resto:

ripgrep

Adem谩s si desconfian, como yo, de los numeros de la tablita, el creador de rg hizo un post muy interesante con todos los benchmarks y comparaciones necesarias:聽http://blog.burntsushi.net/ripgrep/

rg

INSTALACION

# Ubuntu - Importante el --classic si no queres tener un bug grepiando en /etc
$ snap install rg --classic

# Mac OSX
$ brew install ripgrep

Problemas de permisos con ripgrep en /etc :

https://github.com/BurntSushi/ripgrep/issues/863

Related Posts