grep? ripgrep? ¿El buscador de plata? ¿Qué aparejo es mejor para agenciárselas texto en archivos?

grep es la aparejo establecida para la búsqueda de archivos de texto completo en la ristra de comando. Pero hay alternativas disponibles, como ripgrep, ag y sift. Pero, ¿debería cambiar y, de ser así, cuál debería ser su aparejo de búsqueda preferida? Averigüemos.

¿Cómo funciona grep?

grep es una de las herramientas de Linux más aperos disponibles y lo ha sido durante medio siglo. Su nombre significa Impresión de expresión regular total, pero en efectividad proviene de un antiguo comando ed: g/re/p. Este comando es experimentado en agenciárselas texto, especialmente usando el poderoso habla de expresiones regulares.

Puedes aparecer de forma sencilla, con una búsqueda de texto básica:

        grep 'TODO' journal.md
    

Y, eventualmente, crearás coincidencias de patrones complejos:

        grep -E "^((0-9){4})-((0-9){2})-((0-9){2})" dates.txt
    

Este ejemplo muestra el poder bruto de grep: utiliza expresiones regulares extendidas para hacer coincidir líneas que comienzan con una época ISO simple, como 2025-10-26. Todavía puede utilizar grep en sus canalizaciones, con gran finalidad. Por ejemplo, este comando generará líneas de un registro de Apache, en tiempo auténtico, si el servidor envió un estado “no modificado”:

        tail -f /var/log/apache2/access_log | grep '" 304'
    

Y una última gran característica de grep: la búsqueda recursiva. Al ejecutar “grep -r patrón” se buscarán todos los archivos interiormente de su directorio presente y debajo, imprimiendo cada resultado coincidente. Esto hace que grep sea una aparejo perfecta para agenciárselas archivos que contengan cualquier patrón de texto que necesite agenciárselas:

        grep -ri todo
    

¿Qué hace mejor ripgrep?

grep es omnipresente y posiblemente haya hecho más que cualquier otro software para demostrar el poder de Unix: programas enfocados, trabajando en colaboración, comunicándose mediante canalización de datos textuales. Entonces, ¿por qué agenciárselas en otra parte?

ripgrep es una alternativa moderna y popular a grep, y es una de las mejores actualizaciones de un comando predeterminado que puede realizar. Puede instalarlo con una amplia tono de administradores de paquetes, usando un comando como instalación de cerveza ripgrep, sudo apt-get instalar ripgrep, sudo dnf instalar ripgrepo el comando apropiado para su sistema. Una vez instalado, lo ejecutará como rg (no ripgrep), utilizando un enfoque similar a grep. Por ejemplo, para agenciárselas todos los títulos en un archivo de rebajas:

        rg '^#' README.md
    

La primera interpretación de ripgrep llegó en 2016 y aprovechó el relativamente nuevo habla de programación Rust. En términos generales, gracias a una excelente optimización del motor de expresiones regulares en Rust, ripgrep es más rápido que las alternativas, especialmente grep, que puede ser hasta diez veces más gradual.

Es posible que no notes este tipo de beneficio de velocidad con el uso diario. Pero si está lanzando búsquedas de anciano duración (particularmente recursivas, en muchos archivos, con patrones más complejos), ripgrep puede ofrecer grandes beneficios. La búsqueda recursiva es la opción predeterminada de ripgrep, hasta el punto de que el subsiguiente comando es todo lo que necesita para agenciárselas un patrón en todos los archivos interiormente y debajo del directorio presente:

        rg PATTERN
    

Para obtener una relato aproximada, llevé a término una prueba simple (no rigurosa) utilizando un directorio con en torno a de 40.000 archivos debajo. El comando grep tardó 30 segundos en completarse, mientras que ripgrep tardó poco menos de 1 segundo. Ahora admisiblemente, estos resultados sin duda variarán según varios factores, pero ripgrep definitivamente funciona mejor en mi uso diario.

Una línea de comando que muestra una búsqueda grep recursiva que se completa en 30 segundos, mientras que la misma búsqueda usando ripgrep tarda 0,6 segundos.

Una de las razones por las que ripgrep es tan rápido es su maniquí multiproceso, que ejecuta una búsqueda recursiva en paralelo. Un finalidad secundario interesante es que (probablemente) verás los resultados en un orden diferente cada vez que ejecutes la misma búsqueda. Si esto es un problema, utilice el –ordenar ruta opción.

Pero las ventajas de ripgrep van más allá de la mera velocidad; El software asimismo tiene un amplio conjunto de funciones. Uno de los más simples es la compatibilidad con una variedad de opciones de filtro específicas del idioma, por ejemplo:

        rg --type sh 'todo'
    

Esto realizará una búsqueda recursiva desde el directorio presente, buscando sólo en los scripts de shell el patrón “todo”. La aparejo admite una cinta extensa de tipos de archivos, que puede mostrar con la opción –type-list:

Una lista de tipos de archivos por los que ripgrep puede filtrar, incluidos asciidoc, asp, awk, bzip2 y c.

El comando ripgrep es recursivo por naturaleza, pero incluso este comportamiento se puede controlar utilizando la opción –max- Depth. Simplemente ejecuta rg –max-profundidad 1 PATRÓN y su búsqueda emulará un grep principal, definido a archivos en su directorio presente.

De acuerdo con muchos programas modernos, ripgrep admite git en el sentido de que leerá un archivo .gitignore e ignorará los mismos archivos. Esto sólo sucederá en modo recursivo y hay muchas opciones de configuración que le permiten modificar esta funcionalidad.

ripgrep tiene muchas más funciones. Puede silenciar archivos que superen un tamaño determinado (–max-filesize), mostrar información resumida (–stats), utilizar la búsqueda inteligente de mayúsculas y minúsculas (basada en el caso de las literatura de su patrón) y agenciárselas interiormente de archivos gzip.

Aunque grep está firmemente establecido como la aparejo de búsqueda predeterminada y ripgrep es la alternativa más popular, existen algunos otros programas que vale la pena revisar.

ack

ack es una aparejo similar que es mayoritariamente compatible con grep, escrita en Perl. Nuevamente, es recursivo por defecto, lo cual es conveniente. Todavía funciona de guisa similar a ripgrep, inspeccionando archivos que reconoce (por tipo) pero ignorando otros. Sin requisa, eso no se extiende a los archivos que coinciden con archivos .gitignore, aunque ack ignorará cualquier directorio .git.

ack tiene una curiosa opción -f que imprime las rutas de todos los archivos que buscaría, sin tener que buscarlos efectivamente. Puede que esto no parezca tan útil, pero puedes emplear otras características de ack, usándolo para imprimir una cinta de todos los archivos (un poco como “agenciárselas”) o todos los archivos de un tipo determinado. La opción funcionará próximo con .gitignore, por lo que es una forma útil de agenciárselas archivos interiormente de un repositorio de código fuente.

En mi experiencia, ack es más rápido que grep, pero no tan rápido como ripgrep.

El buscador de plata

El comando ag ejecuta un software llamado El buscador de plataque juega con la frase “Silver Surfer” y hace relato al símbolo químico de la plata.

ag es una alternativa muy sólida a ripgrep. No es tan rápido como rg en mi uso, pero casi lo es. La diferencia no es tanta que la notarás a menos que estés ejecutando pruebas comparativas o realizando búsquedas muy complejas.

Pero ag puede hacer muchas de las mismas cosas que rg: respeta archivos .gitignore, compara líneas nuevas, indagación interiormente de archivos binarios y puede imprimir estadísticas resumidas.

Tamizar a

Tamizar a es otra aparejo de búsqueda de texto más, esta vez escrita en Go. Es recursivo de forma predeterminada, con una opción para desactivarlo. Mientras que la salida de rg agrupa los resultados por archivo, sift imprime la ruta completa ayer de cada coincidencia. Este enfoque sacrifica la legibilidad humana en ayuda de la legibilidad de la máquina, por lo que, de forma predeterminada, puede ser más comprensible para las secuencias de comandos.

Al igual que ag, sift es rápido, aunque no tanto como rg. De forma predeterminada, indagación tantos archivos como sea posible, incluidos los archivos binarios y los archivos mencionados en .gitignore. Sin requisa, puedes ignorar cualquier conjunto de archivos usando las opciones –binary-skip y –git, respectivamente.

Sift no tiene página de manual, lo cual considero un defecto, aunque proporciona información útil con la opción –help.


Si todavía usa grep, cualquiera de estas herramientas le parecerá una aggiornamento significativa. ripgrep es mi preferido personal porque se siente muy pulido y su larga cinta de características permite muchos tipos diferentes de búsquedas poderosas. Su gran velocidad, en comparación con grep, es poco que hay que ver para creer.

Siempre es bueno tener alternativas: un ecosistema de código extenso con una competencia sana debería producir un mejor software en todos los aspectos. Dicho esto, hay poco que diferencie estas herramientas para un uso distintivo, lejos de los lenguajes en los que están programadas. ripgrep es sin duda el más rápido (cabal) y probablemente sea su mejor opción a menos que necesite algunas opciones muy específicas.

La información tranquilizadora es que ripgrep todavía está en crecimiento activo y recientemente lanzó la interpretación 15.0.0 en octubre. ack todavía se está desarrollando, con un poco menos de frecuencia, mientras que sift y ag prácticamente han dejado de actualizarse.

Related Posts

Los logros de Wii finalmente están disponibles para emuladores

Robert Triggs / Autoridad de Android TL;DR RetroAchievements está agregando soporte para los logros de Wii. Esto sigue al soporte de GameCube el año pasado. El imitador de Wii y…

Falta CEO dice ‘las aplicaciones van a desaparecer’ en tu teléfono

Hablando en SXSW, el director ejecutante de Nothing, Carl Pei, reiteró sus pensamientos sobre el futuro de la experiencia de los teléfonos inteligentes y dijo que “las aplicaciones van a…

You Missed

¿Pesos o dólares? Claves para proteger monises por volatilidad

¿Pesos o dólares? Claves para proteger monises por volatilidad

Los logros de Wii finalmente están disponibles para emuladores

Los logros de Wii finalmente están disponibles para emuladores

Irán pica cuatro andanadas de ataques sobre Jerusalén

Irán pica cuatro andanadas de ataques sobre Jerusalén

Ve «partidos son columna de la democracia, no los aventureros» | AlMomento.net

Ve «partidos son columna de la democracia, no los aventureros» | AlMomento.net

Falta CEO dice ‘las aplicaciones van a desaparecer’ en tu teléfono

Falta CEO dice ‘las aplicaciones van a desaparecer’ en tu teléfono

El derecho internacional y los megas desafíos del presente | AlMomento.net

El derecho internacional y los megas desafíos del presente | AlMomento.net