GREP(1) | General Commands Manual | GREP(1) |
grep, egrep, fgrep - muestran líneas que concuerdan con un patrón
grep [-AB] núm] [-CEFGVbchiLlnqsvwxyUu] [[-e ] patrón | -f fichero] [--extended-regexp] [--fixed-strings] [--basic-regexp] [--regexp=PATRÓN] [--file=FICHERO] [--ignore-case] [--word-regexp] [--line-regexp] [--line-regexp] [--no-messages] [--invert-match] [--version] [--help] [--byte-offset] [--line-number] [--with-filename] [--no-filename] [--quiet] [--silent] [--files-without-match] [--files-with-matcces] [--count] [--before-context=NUM] [--after-context=NUM] [--context] [--binary] [--unix-byte-offsets] ficheros...
Grep busca en la entrada, bien en la que se le especifica con nombres de ficheros o bien en la entrada estándar si no se le dan dichos nombres o si uno de éstos consiste en -, líneas que concuerden o coincidan con el patrón dado. Si no se dice otra cosa, grep muestra las líneas que concuerden.
Hay tres grandes variantes de grep, controladas por las siguientes opciones:
Además, están disponibles dos programas que son variantes de éste: egrep y fgrep. egrep es similar (pero no idéntico) a grep -E, y es compatible con el egrep histórico de Unix. fgrep es lo mismo que grep -F.
Todas las variantes de grep entienden las siguientes opciones:
Una expresión regular es un patrón que describe un conjunto de cadenas de caracteres. Las expresiones regulares se construyen de forma análoga a las expresiones aritméticas, combinando expresiones más pequeñas mediante ciertos operadores para formar expresiones complejas.
El programa grep entiende dos versiones diferentes de sintaxis para las expresiones regulares: la ``básica'' y la ``extendida''. En la versión de grep de GNU, no hay diferencia en usar una u otra en cuanto a la funcionalidad disponible. En otras implementaciones, las expresiones regulares básicas son menos potentes. La siguiente descripción se aplica a expresiones regulares extendidas; las diferencias con las básicas se resumen a continuación.
Los bloques de construcción fundamentales son las expresiones regulares que concuerdan con un solo carácter. La mayoría de los caracteres, incluyendo todas las letras y dígitos, son expresiones regulares que concuerdan consigo mismos. Cualquier meta-carácter con un significado especial debe ser protegido precediéndolo con una barra inclinada inversa.
Una lista de caracteres rodeados por [ y ] concuerda con cualquier carácter de esa lista; si el primer carácter de la lista es el acento circunflejo ^ entonces concuerda con cualquier carácter de fuera de la lista. Por ejemplo, la expresión regular [0123456789] concuerda con cualquier carácter dígito. Se puede especificar un rango de caracteres ASCII dando el primero y el último, separados por un guión. Finalmente, están predefinidas ciertas clases de caracteres, con un nombre para cada una. Estos nombres son auto-explicativos, y son [:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], [:space:], [:upper:], y [:xdigit:]. Por ejemplo, [[:alnum:]] significa (en inglés) [0-9A-Za-z], salvo que la última forma depende de que la codificación de caracteres siga el estándar ISO-646 o ASCII, mientras que la primera es transportable. (Observe que los corchetes en estos nombres de clases son parte de los nombres simbólicos, y deben incluirse además de los corchetes que delimitan la lista entre corchetes.) La mayor parte de los meta-caracteres pierden su significado especial dentro de estas listas. Para incluir un ] literal, póngalo el primero de la lista. De forma similar, para incluir un ^ literal, póngalo en cualquier sitio menos el primero. Finalmente, para incluir un - literal, póngalo el último.
El punto . concuerda con cualquier carácter solo. El símbolo \w es un sinónimo de [[:alnum:]] y \W lo es de [^[:alnum]].
El acento circunflejo ^ y el signo del dólar (y del escudo portugués) $ son meta-caracteres que respectivamente concuerdan con la cadena vacía al comienzo y al final de una línea. Los símbolos \< y \> respectivamente concuerdan con la cadena vacía al principio y al final de una palabra. El símbolo \b concuerda con la cadena vacía al borde de una palabra, y \B concuerda con la cadena vacía supuesto que no esté en el extremo de una palabra.
Una expresión regular que concuerde con un solo carácter puede ser seguida por uno de estos varios operadores de repetición:
Dos expresiones regulares pueden concatenarse; la expresión regular resultante concuerda con cualquier cadena formada mediante la concatenación de dos subcadenas que concuerdan respectivamente con las subexpresiones concatenadas.
Dos expresiones regulares pueden juntarse mediante el operador infijo |; la expresión regular resultante concuerda con cualquier cadena que concuerde con cualquiera de las subexpresiones.
La repetición tiene precedencia sobre la concatenación, la cual a su vez tiene precedencia sobre la alternancia. Una subexpresión entera puede ser encerrada entre paréntesis para subvertir estas reglas de precedencia.
La retrorreferencia \n, donde n es un dígito simple, concuerda con la subcadena que previamente concordó con la n-sima subexpresión entre paréntesis de la expresión regular.
En las expresiones regulares básicas, los meta-caracteres ?, +, {, |, (, y ) pierden su significado especial; en su lugar emplee las versiones protegidas mediante la barra inversa \?, \+, \{, \|, \(, y \).
En egrep, el meta-carácter { pierde su significado especial; en su lugar emplee \{.
Normalmente, el status de salida es 0 si se encuentran concordancias, y 1 si no se encuentran. (La opción -v invierte el sentido del status de salida.) El status de salida es 2 si había errores de sintaxis en el patrón, si los ficheros de entrada eran inaccesibles, o en caso de otros errores del sistema.
Envíe informes sobre fallos por correo electrónico a la dirección bug-gnu-utils@prep.ai.mit.edu. Asegúrese de incluir la palabra ``grep'' en algún sitio del campo ``Asunto:'' (``Subject:'').
Números de repetición grandes en la construcción {m,n} pueden hacer que grep emplee grandes cantidades de memoria. En adición a esto, ciertas otras obscuras expresiones regulares requieren tiempo y espacio exponenciales, y pueden hacer que grep se quede sin memoria.
Las retrorreferencias son muy lentas, y pueden requerir un tiempo exponencial.
10 Septiembre 1992 | Proyecto GNU |