Mandato grep

Finalidad

Busca un patrón en un archivo.

Sintaxis

grep [ -E | -F ] [ -i ] [ -h ] [ -H ] [ -L ] [ -r | -R ] [ -s ] [ -v ] [ -w ] [ -x ] [ -y ] [ [ [ -b ] [ -n ] ] | [ -c | -l | -q ] ] [ -p [ Sseparador ] ] { [ -e ListaPatrones ... ] [ -f ArchivoPatrón ... ] | ListaPatrones ... } [ Archivo ... ]

Descripción

El mandato grep busca el patrón especificado por el parámetro Patrón u graba cada línea coincidente en la salida estándar. Los patrones están limitados a expresiones regulares en el estilo del mandato ed o egrep. El mandato grep utiliza un algoritmo compacto no determinista.

El mandato grep visualiza el nombre del archivo que contiene la línea coincidente si el usuario especifica más de un nombre en el parámetro Archivo. Los caracteres con significados especiales para la shell ($, *, [, |, ^, (, ), \ ) deben especificarse entre comillas cuando aparecen en el parámetro Patrón. Si el parámetro Patrón no es una serie simple, generalmente deberá especificar todo el patrón entre apóstrofos. En una expresión como, por ejemplo, [a-z], el signo menos (-) cml especifica un rango, según el orden de clasificación actual. Un orden de clasificación puede definir clases de equivalencia para utilizarlas en rangos de caracteres. Si no se especifican archivos, grep presupone la entrada estándar.

Notas:
  1. No ejecute el mandato grep en un archivo especial, ya que producirá resultados imprevisibles.
  2. Las líneas de entrada no deben contener el carácter NULO.
  3. Los archivos de entrada deben terminar con el carácter de nueva línea.
  4. Las expresiones regulares no compararán el carácter de nueva línea.
  5. Aunque algunos distintivos pueden especificarse simultáneamente, algunos distintivos alteran temporalmente a otros. Por ejemplo, la opción -l tiene preferencia sobre todos los demás distintivos. Y, si especifica simultáneamente los distintivos -E y -F, tendrá prioridad el último que especifique.

Distintivos

-b Precede cada línea con el número de bloque en el que se ha encontrado. Utilice este distintivo como ayuda para encontrar números de bloque de disco por contexto. El distintivo -b no puede utilizarse con la entrada de stdin o conductos.
-c Visualiza sólo un número de líneas coincidentes.
-E Trata cada uno de los patrones especificados como expresión regular ampliada (ERE). Un valor NULO para ERE compara todas las líneas.
-eListaPatrones Especifica uno o varios patrones de búsqueda. Funciona igual que un solo patrón, pero resulta de utilidad cuando el patrón empieza por un signo menos (-). Los patrones deben estar separados por un carácter de nueva línea. Puede especificarse un patrón NULO mediante dos caracteres de nueva línea adyacentes o un signo de comillas seguido de un carácter de nueva línea ("\n). Cada patrón se trata como una expresión regular básica (BRE), a menos que también se especifique el distintivo -E o -F. El mandato grep acepta varios distintivos -e y -f. Todos los patrones especificados se utilizan al comparar líneas, pero el orden de evaluación no se especifica.
-F Trata cada patrón especificado como una serie en lugar de como expresión regular. Una serie NULA compara todas las líneas.
-fArchivoPatrón Especifica un archivo que contiene patrones de búsqueda. Cada patrón debe estar separado por un carácter de nueva línea, y una línea vacía se considera un patrón NULO. Cada patrón se trata como una expresión regular básica (BRE), a menos que también se especifique el distintivo -E o -F.
-h Impide que el nombre del archivo que contiene la línea coincidente se añada a esa línea. Suprime los nombres de archivo cuando se especifican varios archivos.
-H Si se especifica la opción -r o -R y se especifica un enlace simbólico que hace referencia a un archivo de directorio de tipo en la línea de mandatos, grep buscará en los archivos del directorio al que hace referencia el enlace simbólico y en todos los archivos de la jerarquía de archivos situada debajo de él.
-i Pasa por alto las mayúsculas o minúsculas de las letras al realizar comparaciones.

-l Lista sólo los nombres de los archivos (una vez) que contienen líneas coincidentes. Cada nombre de archivo debe estar separado por un carácter de nueva línea. Si se busca en la entrada estándar, se devuelve el nombre de vía de acceso (StandardInput). El distintivo -l con cualquier combinación de los distintivos -c y -n se comporta como si sólo se especificara el distintivo -l.
-L Si se especifica la opción -r o -R y se especifica un enlace simbólico que hace referencia a un archivo de directorio de tipo en la línea de mandatos o se encuentra durante el cruce de una jerarquía de archivos, grep buscará en los archivos del directorio al que hace referencia el enlace simbólico y en todos los archivos de la jerarquía de archivos situada debajo de él. Si se especifican -H y -L, tendrá preferencia la última opción especificada en la línea de mandatos.
-n Coloca delante de cada línea el número de línea relativo en el archivo. Cada archivo empieza en la línea 1, y el contador de líneas se restablece para cada archivo procesado.
-p[Separador] Visualiza todo el párrafo que contiene líneas coincidentes. Los párrafos están delimitados por separadores de párrafos, según lo especificado por el parámetro Separador, que son patrones del mismo formato que el patrón de búsqueda. Las líneas que contienen los separadores de párrafos se utilizan sólo como separadores; nunca se incluyen en la salida. El separador de párrafos predeterminado es una línea en blanco.
-q Suprime toda la grabación en la salida estándar, independientemente de las líneas coincidentes. Sale con un estado de cero si se selecciona una línea de entrada. El distintivo -q con cualquier combinación de los distintivos -c, -l y -n se comporta como si sólo se especificara el distintivo -q.
-r Buscar en los directorios recursivamente. Por omisión, se siguen los enlaces a los directorios.
-R Buscar en los directorios recursivamente. Por omisión, no se siguen los enlaces a los directorios.
-s Suprime los mensajes de error grabados ordinariamente para archivos inexistentes o ilegibles. No se suprimen otros mensajes de error.
-v Visualiza todas las líneas que no coinciden con el patrón especificado.
-w Realiza una búsqueda de palabras.
-x Visualiza las líneas que coinciden exactamente con el patrón especificado sin caracteres adicionales.
-y Pasa por alto las mayúsculas y minúscula de las letras al realizar comparaciones.
ListaPatrones Especifica uno o varios patrones que se utilizarán durante la búsqueda. Los patrones se tratan como si se hubieran especificado con el distintivo -e.
Archivo Especifica un nombre de un archivo en el que deben buscarse patrones. Si no se especifica la variable Archivo, se utiliza la entrada estándar.

Estado de salida

Este mandato devuelve los siguientes valores de salida:

0 Se ha encontrado una coincidencia.
1 No se ha encontrado ninguna coincidencia.
>1 Se ha encontrado un error de sintaxis o no ha podido accederse a un archivo (aunque se hayan encontrado coincidencias).

Ejemplos

  1. Para utilizar un patrón que contiene alguno de los caracteres de comparación de patrones *, ^, ?, [, ], \(, \), \{ y \}, especifique:

    grep  "^[a-zA-Z]"  pgm.s 

    Este mandato visualiza todas las líneas de pgm.s cuyo primer carácter es una letra.

  2. Para visualizar todas las líneas que no coinciden con un patrón, especifique:
    grep   -v  "^#" pgm.s
    Este mandato visualiza todas las líneas de pgm.s cuyo primer carácter no es # (almohadilla).
  3. Para visualizar todas las líneas del archivo file1 que coinciden con la serie abc o xyz, especifique:
    grep   -E  "abc|xyz"  file1
  4. para buscar un $ (signo de dólar) en el archivo test2, especifique:

    grep \\$ test2

    Los caracteres \\ (doble barra inclinada invertida) son necesarios para forzar a la shell a pasar un \$ (barra inclinada invertida, signo de dólar) al mandato grep. El carácter \ (barra inclinada invertida) indica al mandato grep que trate el carácter siguiente (en este ejemplo, $) como carácter literal en lugar de como carácter de expresión. Utilice el mandato fgrep para evitar la necesidad de utilizar caracteres de escape, como por ejemplo la barra inclinada invertida.

  5. Para buscar recursivamente a través de /tmp para encontrar archivos que contengan la palabra IBM sin seguir los enlaces que señalan a los directorios, escriba:
    grep –R IBM /tmp
    O BIEN
    grep –r -H IBM /tmp
  6. Para buscar recursivamente a través de /tmp para encontrar archivos que contengan la palabra IBM y seguir también los enlaces, escriba:
    grep –r IBM /tmp
    O BIEN
    grep -R -L IBM /tmp

Archivos

/usr/bin/grep Contiene el mandato grep.

Enviar comentarios |  Valorar esta página