Grep, egrep, fgrep - líneas de impresión que coinciden con un patrón DESCRIPCIÓN DE SINOPSIS Grep busca la entrada con nombre FILE s (o entrada estándar si no se nombran archivos o se da el nombre de archivo) para líneas que contienen una coincidencia con el patrón dado. De forma predeterminada, grep imprime las líneas coincidentes. Además, dos programas variantes egrep y fgrep están disponibles. Egrep es el mismo que grep - E. Fgrep es el mismo que grep - F. OPCIONES-UN NUM. --after-context NUM Imprime NUM líneas de contexto tras las líneas de concordancia. - un . --text Procesar un archivo binario como si fuera texto, esto es equivalente a la opción --binary-filestext. - B NUM. --before-context NUM Imprime NUM líneas de contexto principal antes de alinear líneas. - C NUM, - NUM. --context NUM Imprimir NUM líneas (predeterminado 2) del contexto de salida. B --byte-offset Imprime el desplazamiento de bytes dentro del archivo de entrada antes de cada línea de salida. --binary-files TYPE Si los primeros bytes de un archivo indican que el archivo contiene datos binarios, supongamos que el archivo es del tipo TYPE. Por defecto, TYPE es binario. Y grep normalmente da salida a un mensaje de una línea diciendo que un archivo binario coincide, o ningún mensaje si no hay coincidencia. Si TYPE es sin coincidencia. Grep supone que un archivo binario no coincide con este es equivalente a la opción - I. Si TYPE es texto. Grep procesa un archivo binario como si fuera texto, esto es equivalente a la opción - a. Advertencia: grep --binary-filestext puede generar una basura binaria, que puede tener efectos secundarios desagradables si la salida es un terminal y si el controlador de terminal interpreta algunos de ellos como comandos. - c. --count Suprima la salida normal en lugar de imprimir un recuento de líneas coincidentes para cada archivo de entrada. Con el - v. --invert-match option (ver más abajo), contar líneas que no coincidan. - d ACCIÓN. --directories ACTION Si un archivo de entrada es un directorio, utilice ACTION para procesarlo. De forma predeterminada, se lee ACTION. Lo que significa que los directorios se leen como si fueran archivos ordinarios. Si ACCIÓN es saltar. Los directorios se saltan silenciosamente. Si ACTION es recurse. Grep lee todos los archivos en cada directorio, recursivamente esto es equivalente a la opción - r. - E. --extended-regexp Interpreta PATTERN como una expresión regular extendida (véase más abajo). - e PATRÓN. --regexp PATTERN Utilice PATTERN como patrón útil para proteger patrones que empiezan por -. - F. --fixed-strings Interprete PATTERN como una lista de cadenas fijas, separadas por nuevas líneas, cualquiera de las cuales debe coincidir. - f ARCHIVO. --file FILE Obtener patrones desde FILE. una por línea. El archivo vacío contiene patrones cero y, por lo tanto, no coincide con nada. G --basic-regexp Interpreta PATTERN como una expresión regular básica (véase más adelante). Este es el valor predeterminado. - H. --with-filename Imprime el nombre de archivo de cada coincidencia. H --no-filename Suprime el prefijo de nombres de archivo en la salida cuando se buscan varios archivos. --help Transmite un breve mensaje de ayuda. - I Procesar un archivo binario como si no tuviera datos coincidentes es equivalente a la opción --binary-fileswithout-match. - yo . --ignore-case Ignora las diferencias de caso tanto en el PATTERN como en los archivos de entrada. L --files-without-match Suprime la salida normal en lugar de imprimir el nombre de cada archivo de entrada del que normalmente no se hubiera impreso ninguna salida. La exploración se detendrá en el primer partido. L --files-with-matches Suprime la salida normal en lugar de imprimir el nombre de cada archivo de entrada de la que la salida normalmente se han impreso. La exploración se detendrá en el primer partido. --mmap Si es posible, utilice la llamada de sistema mmap (2) para leer la entrada, en lugar de la llamada de sistema de lectura predeterminada (2). En algunas situaciones, --mmap produce un mejor rendimiento. Sin embargo, --mmap puede causar un comportamiento no definido (incluidos los volcados de núcleo) si un archivo de entrada se contrae mientras grep está en funcionamiento o si se produce un error de E / S. - n. --line-number Prefiere cada línea de salida con el número de línea dentro de su archivo de entrada. - q. --tranquilo . --silent Quiet suprime la salida normal. La exploración se detendrá en el primer partido. También vea la opción - s o --no-messages a continuación. - r. --recursive Lea todos los archivos en cada directorio, recursivamente esto es equivalente a la opción - d recurse. - s. --no-messages Suprime los mensajes de error sobre archivos inexistentes o ilegibles. Nota de portabilidad: a diferencia de GNU grep. Grep tradicional no se ajustaba a POSIX.2. Porque el grep tradicional carecía de una opción - q y su opción - s se comportó como la opción GNU grep s - q. Los scripts de shell destinados a ser portátiles a grep tradicional deberían evitar ambos - q y - s y deberían redirigir la salida a / dev / null en su lugar. - U. --binary Trata el archivo (s) como binario. De forma predeterminada, en MS-DOS y MS-Windows, grep conjetura el tipo de archivo mirando el contenido de la primera lectura de 32 KB del archivo. Si grep decide que el archivo es un archivo de texto, quita los caracteres CR del contenido del archivo original (para hacer expresiones regulares y trabajar correctamente). Especificar - U invalida esta conjetura, haciendo que todos los archivos sean leídos y pasados al mecanismo de coincidencia verbalmente si el archivo es un archivo de texto con pares CR / LF al final de cada línea, esto hará que algunas expresiones regulares fallen. Esta opción no tiene ningún efecto en plataformas distintas de MS-DOS y MS-Windows. - u. --unix-byte-offsets Informe de desplazamientos de bytes de estilo Unix. Este modificador hace que grep informe los desplazamientos de bytes como si el archivo fuera un archivo de texto de estilo Unix, es decir, con caracteres CR desnudados. Esto producirá resultados idénticos al funcionamiento de grep en una máquina Unix. Esta opción no tiene ningún efecto a menos que la opción - b también se utiliza no tiene ningún efecto en plataformas distintas de MS-DOS y MS-Windows. - V. --version Imprime el número de versión de grep a error estándar. Este número de versión debe incluirse en todos los informes de errores (ver más abajo). - v. --invert-match Invertir el sentido de coincidencia, para seleccionar las líneas no coincidentes. - w. --word-regexp Seleccione sólo las líneas que contengan coincidencias que formen palabras enteras. La prueba es que la subcadena coincidente debe estar al principio de la línea, o precedida por un carácter constitutivo sin palabra. Del mismo modo, debe estar al final de la línea o seguido por un carácter constitutivo sin palabra. Los caracteres constitutivos de palabras son letras, dígitos y subrayado. - x . --line-regexp Seleccione sólo aquellos coincidencias que coincidan exactamente con la línea completa. - y Obsoleto sinónimo de - i. Z --null Produce un byte cero (el carácter ASCII NUL) en lugar del carácter que normalmente sigue un nombre de archivo. Por ejemplo, grep - lZ genera un byte cero después de cada nombre de archivo en lugar de la nueva línea habitual. Esta opción hace que la salida sea inequívoca, incluso en presencia de nombres de archivo que contienen caracteres inusuales como líneas de nueva generación. Esta opción se puede utilizar con comandos como find - print0. Perl -0 Ordenar - z. Y xargs -0 para procesar nombres de archivo arbitrarios, incluso aquellos que contienen caracteres de nueva línea. EXPRESIONES REGULARES Una expresión regular es un patrón que describe un conjunto de cadenas. Las expresiones regulares se construyen análogamente a las expresiones aritméticas, utilizando varios operadores para combinar expresiones más pequeñas. Grep entiende dos versiones diferentes de la sintaxis de expresión regular: básica y extendida. En GNU grep. No hay ninguna diferencia en la funcionalidad disponible utilizando cualquiera de las sintaxis. En otras implementaciones, las expresiones regulares básicas son menos potentes. La siguiente descripción se aplica a las expresiones regulares extendidas, las diferencias para las expresiones regulares básicas se resumen a continuación. Los bloques de construcción fundamentales son las expresiones regulares que coinciden con un solo carácter. La mayoría de los caracteres, incluyendo todas las letras y dígitos, son expresiones regulares que coinciden. Cualquier metacaracter con significado especial puede ser citado precediéndolo con una barra invertida. Una lista de caracteres encerrados por y coincide con un solo carácter en esa lista si el primer carácter de la lista es el cursor, entonces coincide con cualquier carácter que no esté en la lista. Por ejemplo, la expresión regular 0123456789 coincide con cualquier dígito. Se puede especificar un rango de caracteres especificando el primer y el último carácter, separados por un guión. Finalmente, ciertas clases de caracteres nombradas están predefinidas. Sus nombres son autoexplicativos, y son: alnum:. : Alpha:. : Cntrl:. :dígito: . :grafico: . : Menor:. :impresión: . Significado de "punct" :espacio: . :Superior: . Y: xdigit :. Por ejemplo,: alnum: significa 0-9A-Za-z. Excepto que la última forma depende de la configuración local POSIX y la codificación de caracteres ASCII, mientras que la primera es independiente de la configuración regional y del conjunto de caracteres. (Tenga en cuenta que los corchetes de estos nombres de clase son parte de los nombres simbólicos y deben incluirse además de los corchetes que delimitan la lista de corchetes.) La mayoría de los metacaracteres pierden su significado especial dentro de las listas. Para incluir un lugar literal primero en la lista. Del mismo modo, para incluir un lugar literal en cualquier lugar, pero primero. Finalmente, para incluir un literal - el lugar lo último. El período . Coincide con cualquier carácter individual. El símbolo w es un sinónimo de: alnum: y W es un sinónimo de: alnum. El caret y el signo de dólar son metacaracteres que coinciden, respectivamente, con la cadena vacía al principio y al final de una línea. Los símbolos lt y gt respectivamente coinciden con la cadena vacía al principio y al final de una palabra. El símbolo b coincide con la cadena vacía en el borde de una palabra, y B coincide con la cadena vacía siempre que no esté en el borde de una palabra. Una expresión regular puede ser seguida por uno de varios operadores de repetición: El elemento precedente es opcional y coincide como máximo una vez. El elemento anterior será igualado cero o más veces. El ítem anterior se emparejará una o más veces. N El elemento anterior coincide exactamente n veces. N, El elemento anterior se empareja n o más veces. N, m El elemento anterior se empareja al menos n veces, pero no más de m veces. Dos expresiones regulares se pueden concatenar la expresión regular resultante coincide con cualquier cadena formada por concatenación de dos subcadenas que coinciden, respectivamente, con las subexpresiones concatenadas. Dos expresiones regulares pueden ser unidas por el operador infix la expresión regular resultante coincide con cualquier cadena que coincida con cualquiera de las subexpresiones. La repetición tiene prioridad sobre la concatenación, que a su vez tiene prioridad sobre la alternancia. Una subexpresión completa puede incluirse entre paréntesis para anular estas reglas de precedencia. La referencia inversa n. Donde n es un solo dígito, coincide con la subcadena previamente igualada por la n-ésima subexpresión entre paréntesis de la expresión regular. En las expresiones regulares básicas los metacaracteres. . . . (.y) pierden su significado especial en lugar de usar las versiones de backslashed. . . . (Y). El egrep tradicional no apoyaba el metacaracter, y algunas implementaciones del egrep apoyan en lugar de otro, así que las escrituras portables deben evitar en patrones del egrep y deben utilizar para hacer juego un literal. GNU egrep intenta apoyar el uso tradicional asumiendo que no es especial si sería el comienzo de una especificación de intervalo inválido. Por ejemplo, el comando de shell egrep busca la cadena de dos caracteres en lugar de informar un error de sintaxis en la expresión regular. POSIX.2 permite este comportamiento como una extensión, pero los scripts portátiles deben evitarlo. VARIABLES AMBIENTALES GREPOPTIONS Esta variable especifica las opciones por defecto que se colocarán delante de cualquier opción explícita. Por ejemplo, si GREPOPTIONS es --binary-fileswithout-match --directoriesskip. Grep se comporta como si las dos opciones --binary-fileswithout-match y --directoriesskip hubieran sido especificadas antes de cualquier opción explícita. Las especificaciones de las opciones están separadas por espacios en blanco. Una barra invertida escapa al siguiente carácter, por lo que se puede utilizar para especificar una opción que contenga espacios en blanco o una barra invertida. LCALL. LCMESSAGES. LANG Estas variables especifican la localización LCMESSAGES, que determina el idioma que grep utiliza para los mensajes. El entorno está determinado por la primera de estas variables que se establece. El inglés americano se utiliza si no se establece ninguna de estas variables de entorno o si no se instala el catálogo de mensajes o si grep no se compiló con NLS (National Language Support). LCALL. LCCTYPE. LANG Estas variables especifican la configuración regional LCCTYPE, que determina el tipo de caracteres, p. Qué caracteres son espacios en blanco. El entorno está determinado por la primera de estas variables que se establece. La configuración regional POSIX se utiliza si no se establece ninguna de estas variables de entorno o si el catálogo de configuración regional no está instalado o si grep no se compiló con NLS (National Language Support). POSIXLYCORRECT Si se establece, grep se comporta como POSIX.2 requiere lo contrario, grep se comporta más como otros programas GNU. POSIX.2 requiere que las opciones que siguen a los nombres de archivo deben ser tratadas como nombres de archivo por defecto, tales opciones se permutan al frente de la lista de operandos y se tratan como opciones. Además, POSIX.2 requiere que las opciones no reconocidas sean diagnosticadas como ilegales, pero como no son realmente contra la ley, el valor predeterminado es diagnosticarlas como no válidas. POSIXLYCORRECT también deshabilita N GNUnonoptionargvflags. descrito abajo. N GNUnonoptionargvflags (Aquí N es grep s identificador de proceso numérico.) Si el i-ésimo carácter de este valor de variables de entorno es 1. No considere que el i-ésimo operando de grep sea una opción, aunque parezca ser una. Un shell puede poner esta variable en el entorno para cada comando que se ejecuta, especificando qué operandos son los resultados de expansión de comodín de nombre de archivo y, por lo tanto, no debe tratarse como opciones. Este comportamiento sólo está disponible con la biblioteca C GNU y sólo cuando no se establece POSIXLYCORRECT. DIAGNÓSTICO Normalmente, el estado de salida es 0 si se encontraron coincidencias y 1 si no se encontraron coincidencias. (La opción - v invierte el sentido del estado de salida.) El estado de salida es 2 si hubo errores de sintaxis en el patrón, archivos de entrada inaccesibles u otros errores del sistema. ERRORES Enviar correos electrónicos a bug-gnu-utilsgnu. org. Asegúrese de incluir la palabra grep en algún lugar del campo Subject :. Los recuentos de repetición grandes en la construcción m, n pueden hacer que grep utilice mucha memoria. Además, algunas otras expresiones regulares oscuras requieren tiempo y espacio exponencial, y pueden hacer que grep se quede sin memoria. Las referencias de retroceso son muy lentas, y pueden requerir tiempo exponencial. Usos de IndexExample del comando grep de Linux Si desea encontrar todos los lugares con inver en el nombre utilice la siguiente sintaxis: grep inver places El asterisco () comodín representa 0 o muchos. Por lo tanto, si usted tiene un lugar llamado inver o un lugar llamado inverness entonces ambos serían devueltos. Otro comodín que puede utilizar es el punto (.). Puede utilizarlo para que coincida con una sola letra. Grep inver. r lugares El comando anterior encontraría lugares llamados inverurie e inverary, pero wouldn39t encontrar invereerie porque sólo puede haber un comodín entre los dos r39s como se indica por el período único. El comodín de período es útil, pero puede causar problemas si tiene uno como parte del texto que está buscando. Por ejemplo, busque en esta lista de nombres de dominio. Para encontrar todos los abouts, podría buscar usando la siguiente sintaxis: grep about domainnames El comando anterior se caería si la lista contenía el siguiente nombre: Por lo tanto, podría intentar la siguiente sintaxis: Grep about domainnames Esto funcionaría bien a menos que existiera un dominio con el siguiente nombre: Para buscar realmente el término sobre lo que tendría que escapar del punto de la siguiente manera: grep about domainnames El comodín final para mostrar es el signo de interrogación que representa Cero o un carácter. Grep ber placenames El comando anterior volvería aberdeen, aberystwyth o incluso berwick. 3. Búsqueda de cadenas al principio y al final de la línea Uso de grep El símbolo de quilate () y el símbolo de dólar () le permiten buscar patrones al principio y al final de las líneas. Imagínese que tiene un archivo llamado fútbol con los siguientes nombres de equipos: Blackpool Liverpool Manchester City Leicester City Manchester United Newcastle United FC Manchester United Si usted quería encontrar todos los equipos que comenzaron con Manchester, utilizaría la siguiente sintaxis: grep Manchester teams The Por encima de comando volvería Manchester City y Manchester United, pero no FC United Of Manchester. Alternativamente, puedes encontrar todos los equipos que terminan en United usando la siguiente sintaxis: grep United teams El comando anterior devolverá el Manchester United y el Newcastle United, pero no el FC United Of Manchester. Continuar leyendo debajo 4. Contando el número de coincidencias usando grep Si no desea devolver las líneas reales que coinciden con un patrón usando grep pero sólo quiere saber cuántos hay puede usar la siguiente sintaxis: grep - c pattern inputfile If El patrón fue emparejado dos veces entonces el número 2 sería devuelto. 5. Encontrar todos los términos que no coinciden con grep Imagine que tiene una lista de nombres de lugares con los países enumerados de la siguiente manera: Usted puede haber notado que Colwyn Bay no tiene país asociado con ella. Para buscar todos los lugares con un país puede usar la siguiente sintaxis: grep land places Los resultados devueltos serían todos los lugares excepto para colwyn bay. Esto, obviamente, sólo funciona para los lugares que terminan en tierra (poco científica). Puede invertir la selección utilizando la siguiente sintaxis: grep - v land lugares Esto encontraría todos los lugares que didn39t final con tierra. 6. Cómo encontrar líneas vacías en archivos con grep Imagine que tiene un archivo de entrada que es utilizado por una aplicación de terceros que detiene la lectura del archivo cuando se encuentra una línea vacía de la siguiente manera: aberdeen scotland inverness escocia liverpool inglaterra colwyn bay wales Cuando el Aplicación llega a la línea después de liverpool que dejará de leer significado colwyn bahía se pierde por completo. Puede utilizar grep para buscar líneas en blanco con la siguiente sintaxis: Desafortunadamente esto no es particularmente útil porque simplemente devuelve las líneas en blanco. Por supuesto, puede obtener un recuento del número de líneas en blanco como un cheque para ver si el archivo es válido como sigue: Sin embargo, sería más útil saber los números de línea que tienen una línea en blanco para que pueda reemplazarlos. Puede hacer eso con el siguiente comando: 7. Cómo buscar cadenas de caracteres en mayúsculas o minúsculas Usar grep Utilizando grep puede determinar qué líneas de un archivo tienen caracteres en mayúsculas usando la siguiente sintaxis: grep 39A-Z39 filename Los corchetes let Determina el rango de caracteres. En el ejemplo anterior coincide con cualquier carácter que se encuentre entre A y Z. Por lo tanto, para hacer coincidir los caracteres en minúsculas, puede utilizar la siguiente sintaxis: grep 39a-z39 filename Si desea hacer coincidir sólo letras y no números u otros símbolos puede utilizar lo siguiente Sintaxis: grep 39a-zA-Z39 nombre de archivo Puede hacer lo mismo con los números de la siguiente manera: grep 390-939 nombre de archivo 8. Buscar patrones de repetición utilizando grep Puede utilizar corchetes para buscar un patrón de repetición. Imagine que tiene un archivo con números de teléfono de la siguiente manera: Usted sabe que la primera parte del número debe ser de tres dígitos y desea encontrar las líneas que no coinciden con este patrón. Del ejemplo anterior sabes que 0-9 devuelve todos los números en un archivo. En este caso queremos que las líneas que comienzan con tres números seguidos por un guión (-). Usted puede hacer eso con la siguiente sintaxis: grep 340-90-90-9-34 números Como sabemos de ejemplos anteriores el quilate () significa que la línea debe comenzar con el patrón siguiente. El 0-9 buscará cualquier número entre 0 y 9. Como esto se incluye tres veces que coincide con 3 números. Finalmente hay un guión para indicar que un guión debe tener éxito los tres números. Mediante el uso de los corchetes puede hacer la búsqueda más pequeña de la siguiente manera: grep 340-9 -34 números Los corchetes también se puede utilizar de la siguiente manera: El medio que el carácter que se busca debe repetirse al menos 5 veces, pero no más de 10 mientras que los medios que el carácter debe ser repetido por lo menos 5 veces pero puede ser más que eso. 9. Uso de la salida de otros comandos Uso de grep Hasta ahora hemos examinado la correspondencia de patrones dentro de los archivos individuales, pero grep puede utilizar la salida de otros comandos como entrada para la coincidencia de patrones. Un gran ejemplo de esto es usar el comando ps que lista los procesos activos. Por ejemplo, ejecute el siguiente comando: Se mostrarán todos los procesos en ejecución en su sistema. Puede usar grep para buscar un determinado proceso de ejecución de la siguiente manera: ps - ef grep firefox Resumen El comando grep es un comando fundamental de Linux y es uno que vale la pena aprender ya que hará que su vida sea mucho más fácil al buscar archivos y Procesos cuando se utiliza el terminal. Here es un ejemplo de comando que invoca GNU grep. Esto lista todas las líneas de los archivos menu. h y main. c que contienen la cadena lsquo hola rsquo seguido por la cadena lsquo rsquo mundial esto es porque lsquo. Rsquo coincide con cero o más caracteres dentro de una línea. Vea las expresiones regulares. La opción - i hace que grep ignore el caso, haciendo que coincida con la línea lsquo Hola, rsquo mundial, que de otro modo no coincidiría. Consulte Invocación. Para más detalles sobre cómo invocar grep. Aquí hay algunas preguntas y respuestas comunes sobre el uso de grep. Cómo puedo enumerar sólo los nombres de los archivos coincidentes lista los nombres de todos los archivos C en el directorio actual cuyo contenido mencionar lsquo main rsquo. Cómo puedo buscar directorios recursivelysearches para lsquo hola rsquo en todos los archivos en el directorio / home / gigi. Para obtener más control sobre los archivos que se buscan, utilice find. Grep Y xargs. Por ejemplo, el siguiente comando busca sólo los archivos C: Esto difiere del comando: que simplemente busca lsquo hola rsquo en todos los archivos del directorio actual cuyos nombres terminan en lsquo. c rsquo. El lsquo encuentra. Rsquo línea de comandos anterior es más similar al comando: Qué pasa si un patrón tiene una lsquo líder - rsquosearches para todas las líneas que coinciden con lsquo - corte aquí - rsquo. Sin - e. Grep intentaría analizar lsquo --cut aquí-- rsquo como una lista de opciones. Supongamos que quiero buscar una palabra completa, no una parte de una palabra sólo se busca por instancias de lsquo hola rsquo que son palabras enteras que no coincide con lsquo Othello rsquo. Para mayor control, use lsquo lt rsquo y lsquo gt rsquo para coincidir con el inicio y el final de las palabras. Por ejemplo: busca sólo las palabras que terminan en lsquo hola rsquo, por lo que coincide con la palabra lsquo Othello rsquo. Cómo hago el contexto de salida alrededor de las letras de líneas coincidentes dos líneas de contexto alrededor de cada línea de coincidencia. Cómo obligar a grep a imprimir el nombre del archivo? Alternativamente, use - H. Que es una extensión GNU: Por qué la gente utiliza expresiones regulares extrañas en la salida ps Si el patrón se había escrito sin los corchetes, que habría emparejado no sólo la línea de salida ps para cron. Sino también la línea de salida ps para grep. Tenga en cuenta que en algunas plataformas, ps limita la salida a la anchura de la pantalla grep no tiene ningún límite en la longitud de una línea excepto la memoria disponible. Por qué grep reporta ldquoBinary file matchesrdquo? Si grep listó todos los ldquolinesrdquo correspondientes a un archivo binario, probablemente generaría una salida que no es útil, y podría incluso descomponer su pantalla. Así que GNU grep suprime la salida de archivos que parecen ser archivos binarios. Para forzar a GNU grep a emitir líneas incluso desde archivos que parecen ser binarios, utilice la opción - a o lsquo - binario-filestext rsquo. Para eliminar el archivo ldquoBinary matchesrdquo mensajes, utilice la opción - I o lsquo - binarios-fileswithout-match rsquo. Por qué doesnrsquot lsquo grep - lv rsquo imprime nombres de archivo no coincidentes? Grep - lv rsquo lista los nombres de todos los archivos que contienen una o más líneas que no coinciden. Para enumerar los nombres de todos los archivos que no contengan líneas coincidentes, use la opción - L o --files-without-match. Puedo hacer ldquoORrdquo con lsquo rsquo, pero qué pasa con ldquoANDrdquofinds todas las líneas que contienen tanto lsquo paul rsquo y lsquo franc, ois rsquo. Por qué el patrón vacío coincide con cada línea de entrada? El comando grep busca las líneas que contienen cadenas que coinciden con un patrón. Cada línea contiene la cadena vacía, por lo que un patrón vacío hace que grep encuentre una coincidencia en cada línea. No es el único patrón: lsquo rsquo, lsquo rsquo, lsquo. Rsquo y muchos otros patrones hacen que grep coincida con cada línea. Para hacer coincidir líneas vacías, use el patrón lsquo rsquo. Para hacer coincidir líneas en blanco, utilice el patrón lsquo: blank: rsquo. Para no coincidir con ninguna línea, utilice el comando lsquo grep - f / dev / null rsquo. Cómo puedo expresar palíndromos en una expresión regular? Se puede hacer mediante el uso de referencias de retroceso, por ejemplo, un palíndromo de 4 caracteres se puede escribir con un BRE: Concuerda con la palabra ldquoradarrdquo o ldquocivic. rdquo Guglielmo Bondioni propuso un solo RE que encuentra todos los palíndromos de hasta 19 caracteres utilizando 9 subexpresiones y nueve referencias. Tenga en cuenta que esto se hace mediante extensiones de ERE de GNU que podría no ser portátil a otras implementaciones de grep. Por qué esta falla de referencia trasera no da salida, porque la primera alterna lsquo (a) 1 rsquo no coincide, ya que no hay lsquo aa rsquo en la entrada, por lo que el lsquo 1 rsquo en la segunda alternativa no tiene nada que remitir A, significando que nunca igualará cualquier cosa. (La segunda alternativa en este ejemplo sólo puede coincidir si la primera suplente ha coincidido con la modificación de la segunda supérflua). Cómo puedo coincidir a través de linesStandard grep no puede hacer esto, ya que se basa fundamentalmente en la línea. Por lo tanto, simplemente usar la clase: space: character no coincide con newlines de la manera que usted podría esperar. Con la opción GNU grep - z (--null-data), cada entrada ldquolinerdquo se termina por un byte nulo, véase Otras opciones. Por lo tanto, puede coincidir con líneas de nuevo en la entrada, pero normalmente si hay una coincidencia de toda la entrada se genera, por lo que este uso se combina a menudo con opciones de supresión de salida como - q. p. ej. Si esto no es suficiente, puede transformar la entrada antes de darla a grep. O gire a awk. Sed Perl O muchas otras utilidades que están diseñadas para operar a través de líneas. Qué hacer grep. Fgrep Y egrep stand for El nombre grep proviene de la forma en que se editó la línea en Unix. Por ejemplo, ed utiliza la siguiente sintaxis para imprimir una lista de líneas coincidentes en la pantalla: fgrep significa Grep fijo egrep significa Grep. Linux extendido y grep de Unix grep. Que significa expresión de expresión regular global, procesa texto línea por línea e imprime cualquier línea que coincida con un patrón especificado. Grep syntax Overview Grep es una poderosa herramienta para hacer coincidir una expresión regular con texto en un archivo, varios archivos o una corriente de entrada. Busca el PATRÓN de texto que especificas en la línea de comandos y muestra los resultados para ti. Ejemplo de uso Digamos queremos localizar rápidamente la frase de nuestros productos en archivos HTML en su máquina. Comencemos por buscar un solo archivo. Aquí, nuestro PATRÓN es nuestros productos y nuestro ARCHIVO es listado de producto. Se encontró una sola línea que contenía nuestro patrón, y grep produce la línea de coincidencia completa al terminal. La línea es más larga que nuestro ancho de terminal, por lo que el texto se enrolla alrededor de las siguientes líneas, pero esta salida corresponde exactamente a una línea en nuestro archivo. Nota: El PATTERN es interpretado por grep como una expresión regular. En el ejemplo anterior, todos los caracteres que utilizamos (letras y un espacio) se interpretan literalmente en expresiones regulares, por lo que sólo la frase exacta será igualada. Otros caracteres tienen significados especiales, sin embargo mdash algunos signos de puntuación, por ejemplo. Para obtener más información, consulte nuestra Guía de referencia rápida de expresiones regulares. Visualización de la salida de grep en color Si utilizamos la opción --color, se pondrán de relieve nuestras coincidencias exitosas: Ver números de líneas de coincidencias exitosas Será aún más útil si sabemos dónde aparece la línea de coincidencia en nuestro archivo. Si especificamos la opción - n, grep prefijará cada línea coincidente con el número de línea: Nuestra línea de coincidencia tiene el prefijo 18: que nos dice que corresponde a la línea 18 de nuestro archivo. Realización de búsquedas grep no sensibles a mayúsculas y minúsculas Qué ocurre si nuestros productos aparecen al principio de una oración o aparecen en mayúsculas? Podemos especificar la opción - i para realizar una coincidencia entre mayúsculas y minúsculas: Utilizando la opción - i, grep encuentra una coincidencia en línea 23 también. Búsqueda de archivos múltiples mediante un comodín Si tenemos varios archivos para buscar, podemos buscarlos todos usando un comodín en nuestro nombre de ARCHIVO. En lugar de especificar la lista de productos. Podemos usar un asterisco () y la extensión. Cuando se ejecuta el comando, el shell ampliará el asterisco al nombre de cualquier archivo que encuentre (dentro del directorio actual) que termine en. Observe que cada línea comienza con el archivo específico donde se produce esa coincidencia. Recursivamente buscando subdirectorios Podemos extender nuestra búsqueda a subdirectorios y cualquier archivo que contengan usando la opción - r, que le dice a grep que realice su búsqueda recursivamente. Permite cambiar nuestro nombre de archivo a sólo un asterisco (), para que coincida con cualquier nombre de archivo o directorio, y no sólo archivos HTML: Esto nos da tres partidos adicionales. Observe que el nombre del directorio está incluido para cualquier archivo coincidente que no esté en el directorio actual. Uso de expresiones regulares para realizar búsquedas más potentes El verdadero poder de grep es que puede utilizarse para coincidir con expresiones regulares. (Eso es lo que el re en grep significa). Las expresiones regulares utilizan caracteres especiales en la cadena PATTERN para coincidir con una matriz más amplia de cadenas. Veamos un ejemplo sencillo. Digamos que desea encontrar cada ocurrencia de una frase similar a nuestros productos en sus archivos HTML, pero la frase debe comenzar siempre con nuestro y terminar con productos. Podemos especificar este patrón en lugar de nosotros: nuestros. productos. En expresiones regulares, el período (.) Se interpreta como un comodín de un solo carácter. Significa que cualquier personaje que aparezca en este lugar coincidirá. El asterisco () significa que el carácter anterior, que aparece cero o más veces, coincidirá. Así que la combinación. Coincidirá con cualquier número de cualquier carácter. Por ejemplo, nuestros productos sorprendentes, los nuestros, los mejores productos e incluso nuestros productos coincidirán. Y porque estaban especificando la opción - i, NUESTROS PRODUCTOS y OuRpRoDuCtS coincidirán también. Permite ejecutar el comando con esta expresión regular, y ver qué coincidencias adicionales podemos obtener: Aquí, también tenemos un partido de la frase nuestros productos finos. Grep es una poderosa herramienta que puede ayudarte a trabajar con archivos de texto, y se vuelve aún más potente cuando te sientes cómodo usando expresiones regulares. Descripción técnica grep busca la entrada de nombre FILE s (o entrada estándar si no se nombra ningún archivo o si se da un solo guión (-) como nombre de archivo) para las líneas que contienen una coincidencia con el patrón dado. De forma predeterminada, grep imprime las líneas coincidentes. Además, tres programas variantes egrep. Fgrep y rgrep están disponibles: egrep es lo mismo que ejecutar grep - E. En este modo, grep evalúa la cadena PATTERN como una expresión regular extendida (ERE). Hoy en día, ERE no se extiende mucho más allá de las expresiones regulares básicas, pero todavía pueden ser muy útiles. Para obtener más información acerca de las expresiones regulares extendidas, vea Basic vs. Extended Regular Expressions. abajo. Fgrep es lo mismo que ejecutar grep - F. En este modo, grep evalúa tu cadena PATTERN como una cadena fija mdash cada carácter de tu cadena es tratado literalmente. por ejemplo. p. ej.
No comments:
Post a Comment