Posted by q3it on martes, diciembre 27, 2022 in Linux
Hasta ahora había hablado de comandos para visualizar, para enumerar, para unir ficheros, pero no había hablado de ninguno para buscar dentro del contenido de estos fichero. Para ello utilizaremos el comando grep, que es uno de los comandos más utilizados dentro de Linux y además es muy potente, y tiene infinidad de opciones de usos. Lo que hará es buscar uno o varios patrones, estos patrones pueden ser una letra, una palabra, una frase o números dentro de uno o más ficheros.
La sintaxis más simple es: grep lo que vamos a buscar y en los ficheros que vamos a buscar. Si nosotros por ejemplo tenemos un fichero llamado oficina1.txt y queremos buscar por el caracter : entonces simplemente vamos a poner lo que vamos a buscar nuestro patrón y luego el fichero donde vamos a buscar.
La sintaxis más simple es: grep lo que vamos a buscar y en los ficheros que vamos a buscar. Si nosotros por ejemplo tenemos un fichero llamado oficina1.txt y queremos buscar por el caracter : entonces simplemente vamos a poner lo que vamos a buscar nuestro patrón y luego el fichero donde vamos a buscar.
Nosotros como argumento podríamos poner varios ficheros. Como vemos en la imagen anterior, lista las líneas donde aparece este carácter.
Cuando buscamos un patrón, por ejemplo, si ponemos una mayúscula buscará esa mayúscula, si ponemos una letra A y a continuación una minúscula buscará esa letra mayúscula y luego la letra minúscula que nosotros hayamos especificado.
Si nosotros queremos cambiar este comportamiento, es decir, que no distinga entre mayúsculas y minúsculas, entonces utilizaremos la opción -i, por ejemplo, si nosotros buscamos la palabra An, pues aparecerán tres nombres Andy, Andres y Angela.
Pero Stanley también tiene an y nosotros queremos que incluya en la busqueda las minúscula, para eso utilizaremos la opción -i, vemos que ahora nos aparece an en minúscula.
Otra de las opciones es -c y lo que hará es contar el número de coincidencias, por ejemplo, en la consulta anterior han aparecido 3.
Luego, también podemos especificar la opción -e cuando queremos especificar más búsquedas, más patrones, por ejemplo, si nosotros queremos buscar por dos puntos y además por An, nosotros podemos especificar -e An en el primer patrón y luego -e : en el segundo patrón y veremos que nos muestra todos los que tengan dos puntos porque lo hemos especificado.
Además todo lo que contenga an como mantenemos la opción -i también nos mostrará lo que aparece en minúscula.
Hay veces que nosotros queremos buscar algo pero mostrar lo que no coincide con nuestra búsqueda. Para ello utilizaremos la opción -v, si nosotros buscamos por : vemos en imágenes anteriores que nos visualiza las líneas que tienen dos puntos, pero si activamos la opción -v nos mostrará todo lo que no tenga dos puntos.
Esto es muy útil cuando necesitamos excluir ip's, patrones, etc. Cuando nos interesa en algún modo encontrar un patrón y mostrar líneas a continuación o anteriormente, utilizaremos un -A en mayúscula y el número de líneas que queremos mostrar a continuación o -B y el número de líneas que queremos mostrar anteriormente.
Por ejemplo, en mi fichero oficina1.txt yo si quiero mostrar a toda la gente de ventas, buscaré la palabra Ventas y utilizaré la opción -A mayúscula y le especfico el número de líneas que quiero que muestre, para este caso 5.
Por ejemplo, en mi fichero oficina1.txt yo si quiero mostrar a toda la gente de ventas, buscaré la palabra Ventas y utilizaré la opción -A mayúscula y le especfico el número de líneas que quiero que muestre, para este caso 5.
Si nosotros quisiéramos buscar por el motivo fuese líneas anteriores nosotros podemos utilizar la opción -B mayúsculas, por ejemplo, en este caso buscamos contables y buscará la palabra contables, pero nos mostrará las cinco líneas anteriores.
Otras opciones importantes cuando nosotros trabajamos con el comando grep es -r/R minúscula y mayúscula, que lo que hará es una búsqueda recursiva. Qué significa eso?. Que nosotros podemos hacer grep y luego lo que queremos buscar en una lista de ficheros, pero si hay directorios no va a buscar dentro de los ficheros dentro de esos directorios, pero si le especificamos -r/R irá por los directorios y subdirectorios buscando el patrón en todos los ficheros.
La opción -H incluye el nombre del fichero y -h lo omite. Imaginemos que nosotros buscamos grep y simplemente le pasamos un nombre de fichero, veremos que simplemente nos buscará las coincidencias pero no nos muestra en qué fichero ha estado, si nosotros necesitamos el nombre del fichero, utilizamos la opción -H en mayúscula y nos mostrará a la izquierda el nombre del fichero. En cambio si aparece siempre el nombre a la izquierda y queremos omitirlo utilizaremos la opción -h minúscula y vemos que simplemente nos mostrará las coincidencias no el nombre del fichero.