Foto cortesía de Alexôme
Debería controlar el comando grep de Linux.
Esto es parte de la serie 15 Ejemplos en curso, donde se proporcionarán 15 ejemplos detallados para un comando o funcionalidad específicos. Anteriormente discutimos 15 ejemplos prácticos para el comando de búsqueda de Linux, el historial de la línea de comandos de Linux y el comando mysqladmin.
En este artículo, repasemos 15 ejemplos prácticos del comando grep de Linux que serán muy útiles tanto para principiantes como para expertos.
Primero cree el siguiente archivo de demostración que se usará en los ejemplos a continuación para demostrar el comando grep.
$ cat demo_file THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE. this line is the 1st lower case line in this file. This Line Has All Its First Character Of The Word With Upper Case. Two lines above this line is empty. And this is the last line.
1. Busque la cadena dada en un solo archivo
El uso básico del comando grep es buscar una cadena específica en el archivo especificado como se muestra a continuación.
Syntax: grep "literal_string" filename
$ grep "this" demo_file this line is the 1st lower case line in this file. Two lines above this line is empty. And this is the last line.
2. Comprobando la cadena dada en varios archivos.
Syntax: grep "string" FILE_PATTERN
Este también es un uso básico del comando grep. Para este ejemplo, copiemos demo_file a demo_file1. La salida de grep también incluirá el nombre del archivo delante de la línea que coincidió con el patrón específico como se muestra a continuación. Cuando el shell de Linux ve el metacarácter, realiza la expansión y proporciona todos los archivos como entrada a grep.
$ cp demo_file demo_file1 $ grep "this" demo_* demo_file:this line is the 1st lower case line in this file. demo_file:Two lines above this line is empty. demo_file:And this is the last line. demo_file1:this line is the 1st lower case line in this file. demo_file1:Two lines above this line is empty. demo_file1:And this is the last line.
3. Búsqueda que no distingue entre mayúsculas y minúsculas usando grep -i
Syntax: grep -i "string" FILE
Este también es un uso básico de grep. Esto busca las mayúsculas y minúsculas de la cadena/patrón dadas de forma insensible. Por lo tanto, coincide con todas las palabras como "the", "THE" y "The" case insensiblemente como se muestra a continuación.
$ grep -i "the" demo_file THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE. this line is the 1st lower case line in this file. This Line Has All Its First Character Of The Word With Upper Case. And this is the last line.
4. Hacer coincidir la expresión regular en los archivos
Syntax: grep "REGEX" filename
Esta es una característica muy poderosa, si puede usar la expresión regular de manera efectiva. En el siguiente ejemplo, busca todo el patrón que comienza con "líneas" y termina con "vacío" con cualquier cosa intermedia. es decir, para buscar "líneas [cualquier cosa intermedia] vacía" en el archivo de demostración.
$ grep "lines.*empty" demo_file Two lines above this line is empty.
De la documentación de grep:una expresión regular puede ir seguida de uno de varios operadores de repetición:
- ? El elemento anterior es opcional y coincide como máximo una vez.
- * El elemento anterior coincidirá cero o más veces.
- + El elemento anterior coincidirá una o más veces.
- {n} El elemento anterior coincide exactamente n veces.
- {n,} El elemento anterior coincide n o más veces.
- {,m} El elemento anterior coincide como máximo m veces.
- {n,m} El elemento anterior coincide al menos n veces, pero no más de m veces.
5. Comprobación de palabras completas, no de subcadenas usando grep -w
Si desea buscar una palabra y evitar que coincida con las subcadenas, use la opción -w. Simplemente haciendo una búsqueda normal se mostrarán todas las líneas.
El siguiente ejemplo es el grep regular donde busca "es". Cuando busque "es", sin ninguna opción, mostrará "es", "suyo", "esto" y todo lo que tenga la subcadena "es".
$ grep -i "is" demo_file THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE. this line is the 1st lower case line in this file. This Line Has All Its First Character Of The Word With Upper Case. Two lines above this line is empty. And this is the last line.
El siguiente ejemplo es WORD grep donde busca solo la palabra "es". Tenga en cuenta que esta salida no contiene la línea "Esta línea tiene todo el primer carácter de la palabra con mayúsculas", aunque "es" está en "Esto", ya que lo siguiente busca solo la palabra "es ” y no por “esto”.
$ grep -iw "is" demo_file THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE. this line is the 1st lower case line in this file. Two lines above this line is empty. And this is the last line.
6. Mostrar líneas antes/después/alrededor del partido usando grep -A, -B y -C
Al hacer un grep en un archivo enorme, puede ser útil ver algunas líneas después de la coincidencia. Puede que te resulte útil si grep puede mostrarte no solo las líneas coincidentes, sino también las líneas después/antes/alrededor de la coincidencia.
Cree el siguiente archivo demo_text para este ejemplo.
$ cat demo_text 4. Vim Word Navigation You may want to do several navigation in relation to the words, such as: * e - go to the end of the current word. * E - go to the end of the current WORD. * b - go to the previous (before) word. * B - go to the previous (before) WORD. * w - go to the next word. * W - go to the next WORD. WORD - WORD consists of a sequence of non-blank characters, separated with white space. word - word consists of a sequence of letters, digits and underscores. Example to show the difference between WORD and word * 192.168.1.1 - single WORD * 192.168.1.1 - seven words.
6.1 Mostrar N líneas después del partido
-A es la opción que imprime las N líneas especificadas después de la coincidencia, como se muestra a continuación.
Syntax: grep -A <N> "string" FILENAME
El siguiente ejemplo imprime la línea coincidente, junto con las 3 líneas posteriores.
$ grep -A 3 -i "example" demo_text Example to show the difference between WORD and word * 192.168.1.1 - single WORD * 192.168.1.1 - seven words.
6.2 Mostrar N líneas antes del partido
-B es la opción que imprime las N líneas especificadas antes de la coincidencia.
Syntax: grep -B <N> "string" FILENAME
Cuando tenía la opción de mostrar las N líneas después del partido, tiene la opción -B para lo contrario.
$ grep -B 2 "single WORD" demo_text Example to show the difference between WORD and word * 192.168.1.1 - single WORD
6.3 Mostrar N líneas alrededor de la coincidencia
-C es la opción que imprime las N líneas especificadas antes del partido. En alguna ocasión, es posible que desee que el partido se muestre con las líneas de ambos lados. Esta opción muestra N líneas en ambos lados (antes y después) del partido.
$ grep -C 2 "Example" demo_text word - word consists of a sequence of letters, digits and underscores. Example to show the difference between WORD and word * 192.168.1.1 - single WORD
7. Destacando la búsqueda usando GREP_OPTIONS
Como grep imprime líneas del archivo por el patrón/cadena que le dio, si desea que resalte qué parte coincide con la línea, debe seguir el siguiente camino.
Cuando realice la siguiente exportación obtendrá el resaltado de las búsquedas coincidentes. En el siguiente ejemplo, resaltará todo esto cuando establezca la variable de entorno GREP_OPTIONS como se muestra a continuación.
$ export GREP_OPTIONS='--color=auto' GREP_COLOR='100;8' $ grep this demo_file this line is the 1st lower case line in this file. Two lines above this line is empty. And this is the last line.
8. Buscando en todos los archivos recursivamente usando grep -r
Cuando desee buscar en todos los archivos del directorio actual y su subdirectorio. La opción -r es la que necesita usar. El siguiente ejemplo buscará la cadena "ramesh" en todos los archivos del directorio actual y todo su subdirectorio.
$ grep -r "ramesh" *
9. Invertir coincidencia usando grep -v
Tenía diferentes opciones para mostrar las líneas coincidentes, para mostrar las líneas antes de la coincidencia, para mostrar las líneas después de la coincidencia y para resaltar la coincidencia. Así que definitivamente también querrás la opción -v para hacer una coincidencia inversa.
Cuando desee mostrar las líneas que no coinciden con la cadena/patrón dado, use la opción -v como se muestra a continuación. Este ejemplo mostrará todas las líneas que no coincidieron con la palabra "ir".
$ grep -v "go" demo_text 4. Vim Word Navigation You may want to do several navigation in relation to the words, such as: WORD - WORD consists of a sequence of non-blank characters, separated with white space. word - word consists of a sequence of letters, digits and underscores. Example to show the difference between WORD and word * 192.168.1.1 - single WORD * 192.168.1.1 - seven words.
10. muestra las líneas que no coinciden con todo el patrón dado.
Syntax: grep -v -e "pattern" -e "pattern"
$ cat test-file.txt a b c d $ grep -v -e "a" -e "b" -e "c" test-file.txt d
11. Contando el número de coincidencias usando grep -c
Cuando desee contar cuántas líneas coinciden con el patrón/cadena dado, utilice la opción -c.
Syntax: grep -c "pattern" filename
$ grep -c "go" demo_text 6
Cuando quieras, averigua cuántas líneas coinciden con el patrón
$ grep -c this demo_file 3
Cuando quieras, averigua cuántas líneas no coinciden con el patrón
$ grep -v -c this demo_file 4
12. Muestre solo los nombres de archivo que coincidan con el patrón dado usando grep -l
Si desea que grep muestre solo los nombres de archivo que coincidieron con el patrón dado, use la opción -l (L minúscula).
Cuando proporciona varios archivos a grep como entrada, muestra los nombres de los archivos que contienen el texto que coincide con el patrón, será muy útil cuando intente encontrar algunas notas en toda su estructura de directorios.
$ grep -l this demo_* demo_file demo_file1
13. Mostrar solo la cadena coincidente
Por defecto, grep mostrará la línea que coincide con el patrón/cadena dado, pero si desea que grep muestre solo la cadena coincidente del patrón, use la opción -o.
Puede que no sea tan útil cuando das la cadena directamente. Pero se vuelve muy útil cuando das un patrón de expresión regular y tratas de ver con qué coincide
$ grep -o "is.*line" demo_file is line is the 1st lower case line is line is is the last line
14. Mostrar la posición del partido en la línea
Cuando desee que grep muestre la posición en la que coincide con el patrón en el archivo, use las siguientes opciones como
Syntax: grep -o -b "pattern" file
$ cat temp-file.txt 12345 12345 $ grep -o -b "3" temp-file.txt 2:3 8:3
Nota: La salida del comando grep anterior no es la posición en la línea, es el desplazamiento de bytes de todo el archivo.
15. Muestra el número de línea mientras muestra la salida usando grep -n
Para mostrar el número de línea del archivo con la línea coincidente. Hace una numeración de línea basada en 1 para cada archivo. Utilice la opción -n para utilizar esta función.
$ grep -n "go" demo_text 5: * e - go to the end of the current word. 6: * E - go to the end of the current WORD. 7: * b - go to the previous (before) word. 8: * B - go to the previous (before) WORD. 9: * w - go to the next word. 10: * W - go to the next WORD.
Tutoriales adicionales de Grep
- 7 Ejemplos de operadores Linux Grep OR, Grep AND, Grep NOT
- Expresiones regulares en el comando Grep con 10 ejemplos:parte I
- Expresiones regulares avanzadas en el comando Grep con 10 ejemplos:parte II
- Busque en un archivo *.bz2 usando bzgrep y en un archivo *.gz usando zgrep
Impresionantes artículos de Linux
Los siguientes son algunos 15 ejemplos impresionantes artículos que pueden resultarle útiles.
- Linux Crontab:15 impresionantes ejemplos de trabajos de Cron
- ¡Mami, lo encontré! — 15 ejemplos prácticos de comandos de búsqueda de Linux
- 15 ejemplos para dominar el historial de línea de comandos de Linux
- Comando Unix LS:15 ejemplos prácticos