En este artículo, le mostramos cómo ejecutar una búsqueda avanzada de cadenas utilizando Grep con expresión regular al brindarle 10 ejemplos prácticos sobre sus implementaciones. Muchos ejemplos discutidos en este artículo tienen implicaciones prácticas, lo que significa que puede usarlos en su programación diaria de Linux. Los siguientes ejemplos describen algunos ejemplos de expresiones regulares para patrones comúnmente buscados.
Ejemplo 1: encontrar un solo fletador en un archivo de texto
Para generar líneas en el archivo 'libro' que contienen un carácter '$', escriba:
$ grep '\ $' libroEjemplo 2: buscar una sola cadena en un archivo de texto
Para generar líneas en el archivo 'libro' que contiene la cadena '$ 14.99 ', escriba:
$ grep '\ $ 14 \.99 'libroEj 3: encontrar un único fletador especial en un archivo de texto
Para generar líneas en el archivo 'libro' que contienen un carácter '\', escriba:
$ grep '\\' libroEj 4: Coincidencia de líneas que comienzan con cierto texto
Use 'ˆ' en una expresión regular para indicar el comienzo de una línea.
Para generar todas las líneas en '/ usr / dict / words' que comienzan con 'pro', escriba:
$ grep 'ˆpro' / usr / dict / palabrasPara generar todas las líneas en el archivo 'libro' que comienzan con el texto 'al principio', independientemente del caso, escriba:
$ grep -i libro 'ˆin the begin'NOTA: Estas expresiones regulares se citaron con 'caracteres; esto se debe a que algunas conchas tratan el carácter 'ˆ' como un "metacarácter" especial
Además de las búsquedas de palabras y frases, puede usar grep para buscar patrones de texto complejos llamados expresiones regulares. Una expresión regular, o "regexp", es una cadena de texto de caracteres especiales que especifica un colocar de patrones para combinar.
Técnicamente hablando, los patrones de palabras o frases son expresiones regulares, solo muy simples. En una expresión regular, la mayoría de los caracteres, incluidas letras y números, se representan a sí mismos. Por ejemplo, el patrón de expresiones regulares 1 coincide con la cadena '1' y el patrón chico coincide con la cadena 'chico'.
Hay una serie de caracteres reservados llamados metacaracteres que no se representan a sí mismos en una expresión regular, pero tienen un significado especial que se utiliza para construir patrones complejos. Estos metacaracteres son los siguientes: ., *, [, ], ˆ, $ y \. Es bueno notar que tales metacaracteres son comunes entre casi todas las distribuciones de Linux comunes y especiales. Aquí hay un buen artículo que cubre los significados especiales de los metacaracteres y da ejemplos de su uso.
Ej 5: Coincidencia de líneas que terminan con cierto texto
Use '$' como el último carácter del texto entre comillas para que coincida con ese texto solo al final de una línea. Para generar líneas en el archivo 'en curso' que terminan con un signo de exclamación, escriba:
$ grep '!$ 'yendoEj 6: Coincidencia de líneas de cierta longitud
Para hacer coincidir líneas de una longitud particular, use ese número de '.'caracteres entre' ˆ 'y' $ '- por ejemplo, para hacer coincidir todas las líneas que tienen dos caracteres (o columnas) de ancho, use' ˆ… $ 'como la expresión regular para buscar.
Para generar todas las líneas en '/ usr / dict / words' que tengan exactamente tres caracteres de ancho, escriba:
$ grep 'ˆ… $' / usr / dict / wordsPara líneas más largas, es más útil usar una construcción diferente: 'ˆ.\ número \ $ ', donde número es el número de líneas que deben coincidir. Use ',' para especificar un rango de números.
Para generar todas las líneas en '/ usr / dict / words' que tengan exactamente doce caracteres de ancho, escriba:
$ grep 'ˆ.\ 12 \ $ '/ usr / dict / palabrasPara generar todas las líneas en '/ usr / dict / words' que tengan veintidós o más caracteres de ancho, escriba:
$ grep 'ˆ.\ 22, \ $ '/ usr / dict / wordsEj 7: Coincidencia de líneas que contienen algunas de algunas expresiones regulares
Para hacer coincidir líneas que contienen cualquiera de una serie de expresiones regulares, especifique cada una de las expresiones regulares para buscar entre operadores de alternancia ('\ |') como la expresión regular para buscar. Se generarán líneas que contengan cualquiera de las expresiones regulares dadas.
Para generar todas las líneas en 'playboy' que contienen los patrones 'el libro' o 'pastel', escriba:
$ grep 'el libro \ | pastel' playboyEj 8: Coincidencia de líneas que contienen todas algunas expresiones regulares
Para generar líneas que coincidan todas de una serie de expresiones regulares, use grep para generar líneas que contengan la primera expresión regular que desea hacer coincidir, y canalice la salida a un grep con la segunda expresión regular como argumento. Continúe agregando tuberías a las búsquedas grep para todas las expresiones regulares que desea buscar.
Para generar todas las líneas en 'lista de reproducción' que contiene ambos patrones 'la orilla' y 'cielo', independientemente del caso, escriba:
$ grep -i 'la orilla' lista de reproducción | grep -i cieloEj 9: Coincidencia de líneas que solo contienen ciertos caracteres
Para hacer coincidir líneas que solo contienen ciertos caracteres, use la expresión regular 'ˆ [caracteres] * $', donde los caracteres son los que deben coincidir. Para generar líneas en '/ usr / dict / words' que solo contienen vocales, escriba:
$ grep -i 'ˆ [aeiou] * $' / usr / dict / palabrasLa opción '-i' coincide con los caracteres independientemente de las mayúsculas y minúsculas; entonces, en este ejemplo, todos los caracteres de las vocales coinciden independientemente del caso.
Ej 10: Encontrar frases independientemente del espacio
Una forma de buscar una frase que pueda aparecer con espacios adicionales entre palabras, o en una línea o salto de página, es eliminar todos los avances de línea y espacios adicionales de la entrada, y luego grep que. Para hacer esto, canalice la entrada a tr con "\ r \ n: \> \ | -" como argumento a la opción '-d' (eliminando todos los saltos de línea de la entrada); canalice eso al filtro fmt con la opción '-u' (dando salida al texto con espaciado uniforme); y canalice eso para grep con el patrón para buscar.
Para buscar en los saltos de línea la cadena "al mismo tiempo que" en el archivo "documentos", escriba:
$ cat docs | tr -d '\ r \ n: \> \ |-'| fmt -u | grep 'al mismo tiempo que'
Resumen
En este artículo, revisamos 10 ejemplos prácticos del uso del comando Grep Linux para buscar y encontrar cadenas en un archivo de texto. En el camino, aprendimos cómo usar expresiones regulares junto con Grep para realizar búsquedas complejas en archivos de texto. A estas alturas ya tiene una mejor idea de lo poderosas que son las funciones de búsqueda de Linux.
Aquí hay recursos adicionales para aquellos interesados en aprender más sobre la programación de Linux:
Recursos para administradores de sistemas
- Guía de administración del sistema Linux: qué es el sistema operativo Linux y cómo funciona
- Guía de administración del sistema Linux: descripción general de la memoria virtual de Linux y la memoria caché del búfer de disco
- Guía de administración del sistema Linux: mejores prácticas para monitorear sistemas Linux
- Guía de administración del sistema Linux: mejores prácticas para realizar arranques y cierres de Linux
- Guía de administración del sistema Linux: prácticas recomendadas para realizar y gestionar operaciones de copia de seguridad
Recursos para programadores del kernel de Linux
- Cómo funciona la administración de memoria del sistema operativo Linux
- Revisión completa de los procesos del sistema operativo del kernel de Linux
- ¿Cuáles son los mecanismos detrás de la gestión de tareas del kernel de Linux?
Diccionario del sistema de archivos de Linux
Revisión completa de cómo funciona el sistema de directorios y archivos de Linux