Búsqueda de sitios web

Cómo realizar una búsqueda de patrones en archivos usando Grep


En esta página

  1. Búsqueda que no distingue entre mayúsculas y minúsculas con Grep
  2. Mostrar ciertas líneas no coincidentes con una línea que contiene una cadena coincidente en Grep
  3. Solo imprime cadenas coincidentes en Grep
  4. Posición de visualización en Grep
  5. Conclusión

En nuestro primer artículo sobre el comando grep, cubrimos bastantes características que ofrece la herramienta, incluida la forma en que puede usarla para buscar solo palabras, buscar dos palabras, contar líneas que contienen palabras coincidentes y más. Aparte de estos, la herramienta proporciona algunas características más fáciles de entender y útiles. En este artículo, discutiremos algunos de ellos.

Tenga en cuenta que todos los ejemplos mencionados en este tutorial se han probado en Ubuntu 14.04LTS. Además, usaremos el siguiente archivo (test_file1.txt) para todos nuestros ejemplos relacionados con grep en este tutorial:

Búsqueda insensible a mayúsculas y minúsculas con Grep

De forma predeterminada, grep distingue entre mayúsculas y minúsculas, lo que significa que, por ejemplo, tratará ABC y abc por separado. Sin embargo, si desea que su búsqueda no distinga entre mayúsculas y minúsculas, puede usar la opción de línea de comando -i.

grep -i [string-to-be-searched] [filename]

Por ejemplo:

grep -i "linux" test_file1.txt

Nota: No solo el patrón (por ejemplo, Linux en el ejemplo anterior), la página de manual de grep dice que la opción -i también se asegura de que se ignore la distinción entre mayúsculas y minúsculas para los archivos de entrada. Aquí está el extracto:

 -i, --ignore-case
Ignore case distinctions in both the PATTERN and the input files. (-i is specified by POSIX.)

Sin embargo, no pudimos reproducir el comportamiento relacionado con los archivos de entrada en nuestro extremo.

Mostrar ciertas líneas no coincidentes con una línea que contiene una cadena coincidente en Grep

Con la herramienta, también puede mostrar un número específico de líneas después, antes o alrededor de la línea que contiene la cadena coincidente.

Use la opción de línea de comando -A para imprimir N líneas después de la línea coincidente.

$ grep -A N [string-to-be-searched] [filename]

Por ejemplo:

$ grep -A 2 "linux" test_file1.txt

Aquí está la salida del comando anterior

De manera similar, la opción de línea de comando -B se usa para mostrar líneas antes de la línea coincidente.

$ grep -B N [string-to-be-searched] [filename]

Por ejemplo:

$ grep -B 2 "linux" test_file1.txt

Aquí está la salida:

Por último, para imprimir líneas alrededor de la línea coincidente, use la opción de línea de comando -C.

$ grep -C N [string-to-be-searched] [filename]

Por ejemplo:

$ grep -C 2 "linux" test_file1.txt

Aquí está la salida capturada:

Solo imprime cadenas coincidentes en Grep

También puede imprimir solo la cadena coincidente en la salida estándar (en lugar de las líneas completas que se muestran de forma predeterminada). Se puede acceder a esta característica usando la opción de línea de comando -o.

$ grep -o [string-to-be-searched] [filename]

Por ejemplo, si el requisito es buscar una cadena \linux\ en un archivo (pero no se deben imprimir líneas completas), entonces usaremos el siguiente comando.

$ grep -o "linux" [file-name]

También podemos usar caracteres comodín como * y .* para grep más de una cadena. Por ejemplo, si queremos agrupar un grupo de palabras que comienzan con \cómo\ y terminan con \linux\, entonces podemos usar el siguiente comando.

$ grep -o “how.*linux” [file-name]

Mostrar posición en Grep

El comando grep también le permite mostrar el desplazamiento de bytes de la línea en la que aparece la cadena coincidente. Se puede acceder a esta característica usando la opción de línea de comando -b. Pero para un mejor uso de esta opción, puede usarla con la opción de línea de comando -o, que mostrará la posición exacta de la cadena coincidente.

$ grep -o -b [string-to-be-searched] [filename]

Por ejemplo:

$ grep -o -b "for" test_file1.txt

Aquí está la salida:

Conclusión

Es posible que no necesite todas estas opciones todos los días, pero al menos debe conocerlas, ya que nunca sabe cuándo pueden ser útiles. Grep se vuelve aún más poderoso cuando se usa con expresiones regulares, pero dejaremos ese tema para otro día.