Cómo usar el comando Grep en Linux

Comprensión del comando grep con ejemplos prácticos para filtrar y mostrar fácilmente el contenido del archivo

GREP significa "Impresión de expresión regular global". Es una utilidad de línea de comandos útil proporcionada por Linux, para buscar la línea de texto que coincide con el patrón proporcionado por el usuario.

grep toma la entrada del usuario en forma de cadenas o palabras que el usuario desea buscar en un archivo en particular. Luego, el comando verifica el archivo especificado por el usuario para este patrón y luego devuelve las líneas que coinciden con el patrón proporcionado.

Hace un excelente trabajo al filtrar el contenido de un archivo, lo que facilita nuestra tarea de buscar contenido particular en uno o varios archivos simultáneamente.

En este artículo, repasemos el funcionamiento del grep comando con algunos ejemplos prácticos en detalle.

Opciones disponibles con grep mando

Estas son algunas de las opciones fundamentales que utilizará con frecuencia con el grep mando.

OpciónDescripción
-IPara una búsqueda que no distingue entre mayúsculas y minúsculas
-rPara buscar recursivamente todos los archivos en el directorio especificado y sus subdirectorios
-CPara mostrar el número total de veces que aparece una cadena
-vPara mostrar las líneas que no coinciden
-wFiltrar por esa palabra en particular usada por separado

Utilizando el grep mando

grep El comando generalmente se usa con la tubería (|) utilidad. Se puede implementar con la tubería de shell cuando desee usarlo con algunos otros comandos de Linux. A pesar de que, grep también se puede utilizar individualmente sin la tubería (|) utilidad.

Veamos algunas de las sintaxis básicas del grep comando con y sin la utilidad de tubería.

Primero, permítame mostrarle el archivo de texto de muestra que usaré para ilustrar el grep mando.

LA INDIA ES UN HERMOSO PAÍS DE GENTE AMOROSA DE LA PAZ. india se asienta sobre tres pilares: el poder legislativo, el ejecutivo y el judicial. India es un hermoso país de gente amante de la paz. India se preocupa por la gente ya que su recurso cartesiano coordina la importancia de todas las coordenadas cartesianas. A continuación se muestran dos líneas vacías. el uso de un carro de bueyes es una vista común en el pueblo para las tareas agrarias. Este es el final del archivo de muestra.

grep usado con tubería (|)utilidad

grep El comando se puede implementar junto con otros comandos de Linux utilizando las tuberías de shell. Como, usando el gato comando para mostrar el contenido del archivo pero al mismo tiempo canalizar la salida usando el grep comando para mostrar solo el contenido que desea ver. Esto quedará más claro cuando analicemos el ejemplo.

Sintaxis:

[comando] | grep [cadena]

Ejemplo:

cat sample.txt | legislatura grep

Aquí, he usado el gato comando para mostrar algunas líneas del archivo "sample.txt". Solo deben mostrarse aquellas líneas que contienen la palabra "legislatura" e ignorar el resto de las líneas.

Producción:

gaurav @ ubuntu: ~ / espacio de trabajo $ cat sample.txt | grep legislatura india se basa en tres pilares: legislativo, ejecutivo y judicial. gaurav @ ubuntu: ~ / espacio de trabajo $

grep usado sin tubería (|)utilidad

grep incluso se puede usar directamente como un comando individual sin usar la tubería ( | ) utilidad.

Sintaxis:

grep [string_to_be_searched] [nombre de archivo]

Ejemplo:

grep India sample.txt

Producción:

India es un hermoso país de gente amante de la paz. India se preocupa por la gente como recurso

Por lo tanto, he utilizado el grep comando directamente para filtrar las líneas que contienen la cadena "India" del archivo de texto "sample.txt".

Búsqueda que no distingue entre mayúsculas y minúsculas mediante grep mando

Linux es muy cauteloso con la distinción entre mayúsculas y minúsculas cuando activamos los comandos en la terminal. Esto requiere que el usuario tenga cuidado con el caso de la cadena puesta en el comando.

Veamos esto con un ejemplo.

grep peace sample.txt

En este caso, no obtendremos un resultado ya que no existe una palabra como "paz" en el archivo de muestra. Tenemos la palabra "Paz" con una "P" mayúscula. La palabra es la misma pero cuando usamos la grep comando sin ninguna opción, busca la coincidencia exacta en el archivo, sin tener en cuenta los cambios en el caso de la letra.

Para evitar esta ambigüedad, simplemente puede utilizar el -I opción que literalmente dice la grep mando "Olvídate del caso en el que puse la cadena y busca todos los patrones coincidentes en el archivo".

Sintaxis:

grep -i [cadena] [nombre de archivo]

Ejemplo:

grep -i peace sample.txt

Producción:

LA INDIA ES UN HERMOSO PAÍS DE GENTE AMOROSA DE LA PAZ. India es un hermoso país de gente amante de la paz.

Todas las líneas coincidentes se muestran independientemente del caso en el que se encuentre la cadena coincidente.

Búsqueda recursiva usando grep mando

El -r La opción buscará todos los archivos en un directorio y todos sus subdirectorios que coincidan con el patrón de cadena proporcionado por el usuario en el comando.

Sintaxis:

grep -i -r [cadena] [ruta_archivo]

Ejemplo:

grep -i -r tomcat / home / gaurav / espacio de trabajo

La cadena aquí es "tomcat" y se buscará en el espacio de trabajo del directorio. Todos los subdirectorios y archivos del directorio "espacio de trabajo" también se analizarán para que coincidan con el patrón de cadena proporcionado.

Producción:

./context_log.policy:// catalina.policy - Permisos de política de seguridad para Tomcat 7 ./context_log.policy:// Nota: Si tomcat-juli.jar está en $ {catalina.base} y no en $ {catalina.home }, ./context_log.policy:// grant codeBase "archivo: $ {catalina.base} /bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "archivo: $ {catalina.home } /bin/tomcat-juli.jar "{./context_log.policy: permiso java.lang.RuntimePermission" accessClassInPackage.org.apache.tomcat.websocket.server "; ./context.xml: ./catalina.properties:# - Tomcat Bootstrap JAR ./catalina.properties:# - Tomcat API JAR ./catalina.properties:# - Tomcat JAR ./catalina.properties:# - Común no Tomcat JARs ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catalina.properties:# tomcat.util.buf.StringCache.char.enabled = true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache.cacheSize=5000. /server.xml: pathname = "conf / tomcat-users.xml" /> ./server.xml: 

NOTA: Mientras usa el -r opción con la grep comando necesitamos proporcionar la ruta del archivo y no el nombre del archivo

Buscando palabras completas solo con grep mando

Muchas veces, el caso es que buscará una palabra, pero terminará llenando su terminal con las líneas coincidentes que contienen su palabra coincidente, pero no como una palabra individual. Es posible que vea las líneas que contienen algunas palabras cuya subparte es la cadena que ha ingresado.

¿Confundido con esto? No se preocupe, es mucho más fácil de entender una vez que obtiene el ejemplo.

Ejemplo:

Aquí, quiero buscar una palabra individual "carrito" y mostrar todas las líneas que coinciden con esta palabra en el archivo "sample.txt".

grep -i carrito sample.txt

Producción:

Coordenadas cartesianas Importancia de todas las coordenadas cartesianas. El uso de un carro de bueyes es una vista común en el pueblo para las tareas agrarias. El carro desapareció cuando el niño lo dejó suelto.

En el resultado, puede observar que la palabra "cartesiano" también contiene la palabra "carrito" y, por lo tanto, las líneas que contienen la palabra "cartesiano" también se muestran aunque no queremos que se muestren.

Puedes usar el -w opción con la grep comando para resolver esta ambigüedad.

Sintaxis:

grep -i -w [cadena] [nombre de archivo]

Ejemplo:

grep -i -w carrito sample.txt

Producción:

el uso de un carro de bueyes es una vista común en el pueblo para las tareas agrarias. El carro desapareció cuando el niño lo dejó suelto. 

Ahora, cuando haya usado el -w opción con grep obtendrá solo las líneas en las que la palabra "carrito" se usa como un todo.

Búsqueda invertida usando grep mando

grep El comando también se puede utilizar de forma inversa. Podemos usar el grep comando de manera opuesta al ocultar las líneas coincidentes y mostrar solo las líneas donde no se encuentra la coincidencia. Puede hacer esto usando el -v opción con la grep mando.

Sintaxis:

grep -i -v [cadena] [nombre de archivo]

Ejemplo:

grep -i -v recurso sample.txt

Producción:

LA INDIA ES UN HERMOSO PAÍS DE GENTE AMOROSA DE LA PAZ. india se asienta sobre tres pilares: el poder legislativo, el ejecutivo y el judicial. India es un hermoso país de gente amante de la paz. coordenadas cartesianas importancia de todas las coordenadas cartesianas. el uso de un carro de bueyes es una vista común en el pueblo para las tareas agrarias. Este es el final del archivo de muestra.

En la salida, se muestran todas las demás líneas que no sean la línea que contiene la palabra "recurso".

Contando apariciones de cadenas coincidentes

La salida de la grep El comando suele ser muy largo si los datos del archivo son extensos. Cuantas más coincidencias, más largas son las salidas de la grep mando. Linux le proporciona una opción en la que puede mostrar el número de apariciones de la coincidencia.

Sintaxis:

grep -i -c [cadena] [nombre de archivo]

Ejemplo:

grep -i -c india sample.txt

Producción:

gaurav @ ubuntu: ~ / espacio de trabajo $ grep -i -c india sample.txt 4 gaurav @ ubuntu: ~ / espacio de trabajo $

Aquí, el resultado es un número que es el número de apariciones de la palabra "India" en el archivo sample.txt.

NOTA: He usado el -I opción en cada ejemplo para estar seguro con el problema de la distinción entre mayúsculas y minúsculas. En caso de que esté seguro de las mayúsculas y minúsculas de la palabra que está buscando, puede omitir con seguridad las -I opción.

Conclusión

Hemos aprendido los usos fundamentales de la grep comando en los sistemas Linux en este tutorial. También aprendimos a mostrar contenido variado que se adapta mejor a nuestras necesidades y a no abarrotar la terminal con un montón de líneas. grep El comando seguramente ahorrará tiempo si se usa para escanear grandes conjuntos de datos.