Encontrar cadenas en archivos de texto usando GREP con expresión regular

Encontrar cadenas en archivos de texto usando GREP con expresión regular
GREP es una de las herramientas más populares para buscar y encontrar cadenas en un archivo de texto. El nombre 'Grep' se deriva de un comando en la herramienta de editor de línea UNIX de unix ahora OBSOLETE: el comando ED para buscar a nivel mundial a través de un archivo para un expresión regular y luego impresión Esas líneas eran g/re/p, Donde RE era la expresión regular que usarías. Finalmente, el comando GREP se escribió para hacer esta búsqueda en un archivo cuando no use ED.

En este artículo, le mostramos que ejecute una búsqueda de cadenas anticipadas usando GREP con expresión regular dándole 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. Las siguientes muestras describen algunos ejemplos de regexp para patrones comúnmente buscados.

Ej. 1: Encuentre un solo fletador en un archivo de texto

Para emitir líneas en el archivo 'libro' que contiene un carácter '$', escriba:

Libro de $ Grep '\ $'

Ej 2: Encuentre una sola cadena en un archivo de texto

Para emitir líneas en el archivo 'libro' que contiene la cadena '$ 14.99 ', tipo:

$ Grep '\ $ 14 \.Libro de 99 '

Ej 3: Encuentre un pañuelo especial en un archivo de texto

Para emitir líneas en el archivo 'libro' que contiene un carácter '\', escriba:

$ Grep '\\' libro

Ex 4: Líneas coincidentes que comienzan con cierto texto

Use 'ˆ' en un regexp para denotar el comienzo de una línea.

Para emitir todas las líneas en '/usr/dict/palabras' comenzando con 'pro', escriba:

$ grep 'ˆpro'/usr/dict/palabras

Para producir todas las líneas en el archivo 'libro' que comience con el texto 'al principio', independientemente del caso, tipo:

$ grep -i 'ˆin el libro'

NOTA: Estas regexps fueron citadas con 'caracteres; Esto se debe a que algunas conchas tratan al personaje 'ˆ' como un "metacharacter" 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 que coincidan.

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 personajes incluyen letras y números representados en sí mismos. Por ejemplo, el patrón regexp 1 coincide con la cadena '1' y el patrón chico coincide con la cadena 'chico'.

Hay varios caracteres reservados llamados metacharacteres que no se representan en una expresión regular, pero tienen un significado especial que se usa para construir patrones complejos. Estos metacharacteres son los siguientes: ., *, [, ], ˆ, $ y \. Es bueno tener en cuenta que tales metacharacteres son comunes entre casi todas las distribuciones de Linux comunes y especiales. Aquí hay un buen artículo que cubre significados especiales de los metacharacteres y da ejemplos de su uso.

Ex 5: líneas coincidentes que terminan con cierto texto

Use '$' como el último carácter del texto citado para que coincida solo con ese texto al final de una línea. Para emitir líneas en el archivo 'ir' terminando con un punto de exclamación, escriba:

$ Grep '!$ 'Going

Ex 6: líneas coincidentes de cierta longitud

Para que coincidan con las líneas de una longitud particular, use ese número de '.'personajes entre' ˆ 'y' $ '- por ejemplo, para que coincidan con todas las líneas que son dos caracteres (o columnas) de ancho, use' ˆ ... $ 'como el Regexp para buscar.

Para emitir todas las líneas en '/usr/dict/palabras' que son exactamente tres caracteres de ancho, escriba:

$ Grep 'ˆ ... $'/usr/dict/palabras

Para líneas más largas, es más útil usar una construcción diferente: 'ˆ.\ número \ $ ', donde el número es el número de líneas a coincidir. Usar ',' para especificar un rango de números.

Para emitir todas las líneas en '/usr/dict/palabras' que tienen exactamente doce caracteres de ancho, escriba:

$ Grep 'ˆ.\ 12 \ $ '/usr/dict/palabras

Para emitir todas las líneas en '/usr/dict/palabras' que tienen veintidós o más caracteres de ancho, tipo:

$ Grep 'ˆ.\ 22, \ $ '/usr/dict/palabras

Ej 7: líneas coincidentes que contienen cualquiera de algunos reglas

Para que coincidan con las líneas que contienen cualquiera de una serie de regexps, especifique cada uno de los reglas para buscar entre operadores de alternancia ('\ |') como el regexp para buscar. Se emitirán líneas que contengan cualquiera de las reglas dadas.

Para generar todas las líneas en 'Playboy' que contiene los patrones 'el libro' o 'pastel', escriba:

$ Grep 'The Book \ | Cake' Playboy

Ex 8: líneas coincidentes que contienen todas las reglas

A las líneas de salida que coinciden todo De una serie de regexP, use líneas de GREP para salir que contengan el primer regexp que desea coincidir y vaya la salida a un GREP con el segundo regexp como argumento. Continúe agregando tuberías a GREP Búsquedas de todas las reglas que desea buscar.

Para generar todas las líneas en 'Lista de reproducción' que contiene ambos patrones 'la costa' y 'cielo', independientemente del caso, tipo:

$ GREP -I Lista de reproducción 'The Shore' | Grep -i cielo

Ex 9: líneas coincidentes que solo contienen ciertos caracteres

Para coincidir con líneas que solo contienen ciertos caracteres, use el regexp 'ˆ [caracteres]*$', donde los caracteres son los que coinciden. Para emitir líneas en '/usr/dict/palabras' que solo contienen vocales, escriba:

$ grep -i 'ˆ [aeiou]*$'/usr/dict/palabras

La opción '-i' coincide con los caracteres independientemente del caso; Entonces, en este ejemplo, todos los caracteres vocales coinciden independientemente del caso.

Ex 10: Encontrar frases independientemente del espacio

Una forma de buscar una frase que pueda ocurrir con espacios adicionales entre las palabras, o a través de una línea de línea o ruptura de la página, es eliminar todas las hojas de línea y espacios adicionales de la entrada, y luego Grep que. Para hacer esto, canse la entrada a TR con "\ r \ n: \> \ |-" como argumento a la opción '-d' (eliminar todas las rupturas de línea de la entrada); Vaya a eso al filtro FMT con la opción '-u' (emitir el texto con espaciado uniforme); y tuve eso para GREP con el patrón para buscar.

Para buscar los descansos de línea para 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 de uso del comando GREP Linux para buscar y encontrar cadenas en un archivo de texto. En el camino, aprendimos a usar expresiones regulares junto con GREP para realizar búsquedas complejas en archivos de texto. Por ahora tienes una mejor idea sobre cuán poderosas 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 del administrador del sistema Linux: descripción general de la memoria virtual de Linux y el caché de búfer de disco
  • Guía de administración del sistema de Linux: las mejores prácticas para monitorear los sistemas Linux
  • Guía de administración del sistema Linux: mejores prácticas para realizar botas y paradas de Linux
  • Guía de administración del sistema de Linux: mejores prácticas para hacer y administrar operaciones de respaldo

Recursos para programadores de kernel de Linux

  • Cómo funciona la gestión de la memoria del sistema operativo Linux
  • Revisión completa de los procesos del sistema operativo del núcleo de Linux
  • ¿Qué son los mecanismos detrás de la gestión de tareas del kernel de Linux?
Diccionario del sistema de archivos de Linux

Revisión integral de cómo funciona el archivo y el sistema de directorio de Linux