Cómo instalar la herramienta ripgrep en Linux

Ripgrep es una herramienta de búsqueda orientada a líneas que combina la utilidad del buscador de plata y la velocidad de GNU grep. Funciona buscando de forma recursiva en la ruta del directorio actual un patrón de expresiones regulares ignorando los archivos ocultos y binarios de forma predeterminada. Actualmente es compatible con Windows, Mac OS y Linux con descargas binarias disponibles después de cada nuevo liberar.

¿Por qué utilizar ripgrep?

Es más rápido que grep, awk y sed. Ignora archivos binarios y ocultos de forma predeterminada. De manera similar a grep, puede buscar tipos específicos de archivos o ignorar otros explícitamente. De forma nativa, admite codificaciones de texto distintas de la compatibilidad con UTF y Unicode. La velocidad de Ripgrep proviene del motor de expresiones regulares de Rust a partir del cual se construyó utilizando autómatas finitos, SIMD y otras optimizaciones literales agresivas para dar cuenta de su búsqueda rápida. También admite la búsqueda con mapas de memoria con el uso de búferes intermedios, lo que lo hace adecuado para archivos individuales y directorios grandes.

Cómo instalar Ripgrep

El nombre binario de ripgrep es rg. Los binarios de Linux son ejecutables estáticos, mientras que los binarios de Windows se crean con MinGW (GNU) o con Microsoft Visual C ++ (MSVC).

Sobre Homebrew de Mac OS X puede instalarlo desde homebrew-core, de la siguiente manera:

$ brew install ripgrep

o puede instalar un binario compilado con rust todas las noches (incluido SIMD y todas las optimizaciones) utilizando un toque personalizado:

$ brew tap burntsushi/ripgrep https://github.com/BurntSushi/ripgrep.git
$ brew install burntsushi/ripgrep/ripgrep-bin

Si es un usuario de Windows Chocolatey, puede instalar desde el repositorio oficial.

$ choco install ripgrep

Si eres un Arch Linux usuario, luego puede instalar desde los repositorios oficiales.

$ pacman -S ripgrep

Si eres un Gentoo usuario, puede instalar desde el repositorio oficial.

$ emerge ripgrep

Si eres un Fedora 24+ usuario, puede instalar desde copr.

$ dnf copr enable carlgeorge/ripgrep
$ dnf install ripgrep

Si eres un RHEL / CentOS 7 usuario, puede instalar desde copr.

$ yum-config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlgeorge/ripgrep/repo/epel-7/carlgeorge-ripgrep-epel-7.repo
$ yum install ripgrep

Si eres un Nada usuario, puede instalar desde nixpkgs.

$ nix-env --install ripgrep #Or using the attribute name, which is also `ripgrep`

Si eres un Programas de oxidación, se puede instalar con carga. Tenga en cuenta que esto requiere que tenga Rust 1.12 o más reciente instalado.

$ cargo install ripgrep

ripgrep no se encuentra actualmente en ningún otro repositorio de paquetes. Me gustaría cambiar eso.

Pocos ejemplos

Puede buscar cualquier palabra clave de forma recursiva con el comando “rg ‘nombre'” como se muestra a continuación:

$ rg plugins

Esta example omite todos los archivos ocultos y binarios en la ruta de búsqueda. que se puede indicar explícitamente usando ‘-u flag’ o ‘-uu flags’ como se muestra a continuación.

$ rg -uu plugins  # similar to `grep -r` 
$ rg -uuu plugins  # similar to `grep -a -r`

Buscar y reemplazar

Busque patrones del archivo dado, con un patrón por línea. Cuando esta bandera se usa varias veces o en combinación con la bandera ‘-e / – regexp’, se buscan todos los patrones proporcionados. Las líneas de patrón vacías coincidirán con todas las líneas de entrada y la nueva línea no se cuenta como parte del patrón. -r, –replace reemplaza todas las coincidencias con la cadena dada al imprimir los resultados.

1) Encuentre nombres y apellidos e intercambielos usando un patrón de expresiones regulares asignándolos a dos variables y aplicando la marca –replace

$ rg '([A-Z][a-z]+)s+([A-Z][a-z]+)' --replace '$2, $1' #'([A..Z]..)' -> regexp flag

Busca patrones en archivos con la marca –files que imprime cada archivo que se buscaría sin realizar la búsqueda. l –files-with-matches flag muestra las rutas con al menos una coincidencia. También en cuanto a mostrar archivos sin coincidencia (- files-without-match); imprima cada archivo que se buscaría sin realizar la búsqueda. Esto es útil para determinar si se está buscando o no en un archivo en particular.

2) Busque archivos que contengan complementos en el directorio de documentos siguiendo enlaces simbólicos

$ rg -LF 'plugins' /home/localhost/Documents/ # -L flag for following symbolic links

Incluya o excluya archivos / directorios para la búsqueda que coincidan con el glob dado con el indicador -g o –glob. Esto siempre anula cualquier otra lógica de ignorar. Se pueden usar múltiples banderas glob. Las reglas de globbing coinciden con los globs .gitignore. Anteponga un glob a! para excluirlo.

$ rg plug -g 'README.*'
$ rg plug -g '!*.min.js' #excludes glob

Conclusión

Actualmente, Ripgrep supera a cualquier otra herramienta de búsqueda que se encuentre en el sistema Linux, ya que busca tanto directorios de archivos únicos como grandes, y es mejor tanto en rendimiento como en corrección. Además, ripgrep proporciona soporte Unicode y funciona mejor que las herramientas disponibles actualmente como grep, awk, sed, find y será una ventaja adicional para cualquier usuario de Linux.