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:
- No ejecute el mandato grep en un archivo especial, ya que
producirá resultados imprevisibles.
- Las líneas de entrada no deben contener el carácter NULO.
- Los archivos de entrada deben terminar con el carácter de nueva línea.
- Las expresiones regulares no compararán el carácter de nueva línea.
- 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
- 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.
- Para visualizar todas las líneas que no coinciden con un patrón, especifique:
Este
mandato visualiza todas las líneas de pgm.s cuyo primer
carácter no es # (almohadilla).
- Para visualizar todas las líneas del archivo file1
que coinciden con la serie abc o
xyz, especifique:
- 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.
- 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
- 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. |