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ón | Descripción |
-I | Para una búsqueda que no distingue entre mayúsculas y minúsculas |
-r | Para buscar recursivamente todos los archivos en el directorio especificado y sus subdirectorios |
-C | Para mostrar el número total de veces que aparece una cadena |
-v | Para mostrar las líneas que no coinciden |
-w | Filtrar 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.