ADMINISTRACION DE SERVIDORES II
INTEGRANTES:
-RIOJAS SUCLUPE JUNIOR EXEQUIEL
-CARLOS AUGUSTO VILLEGAS YANCUL
PROFESOR
MARCO AURELIO PORRO CHULLI
I.TEMA:COMANDO DE BUSQUEDA-GREP
1.CONTENIDO
DEFINICION
grep es una utilidad de la línea de comandos escrita originalmente para ser usada con el sistema operativo Unix.
Usualmente, grep toma una expresión regular de la línea de comandos, lee la entrada estándar o una lista de archivos, e imprime las líneas que contengan coincidencias para la expresión regular.
Su nombre deriva de un comando en el editor de texto ed que tiene la siguiente forma: g/re/p y significa «hacer una búsqueda global para las líneas que encajen con la expresión regular (regular expression en inglés), e imprimirlas». Hay varios argumentos que se pueden usar con grep para modificar el comportamiento por defecto.
Existen otros retroacrónimos (incorrectos) para el nombre, entre ellos: General Regular Expression Parser (analizador general de expresiones regulares), General Regular Expression Print (imprimir expresión regular general), y Global Regular Expression Print (imprimir expresión regular global), éste último no tan lejano de la realidad.
Una de las cosas que me encanta de los Sistemas Operativos basados en Linux es que podemos de hacer miles de cosas desde una terminal, yo uso actualmente Ubuntu 12.04 y simplemente presiono Ctrl+Alt+T y ya tenemos nuestra ventana del Terminal para ejecutar comandos y todo lo que queramos.
Hoy vamos a ver como usar el comando grep para buscar una palabra o un texto dentro de los archivos de un directorio o incluso dentro de los subdirectorios de este.
La sintaxis del comando grep es:
grep “texto a buscar” directorio-ruta
Ejemplos:
grep "prueba" /home/usuario/prueba/*.*
grep -r "prueba" /home/usuario/prueba/
grep -l "prueba" /home/usuario/prueba/*.*
En el primer ejemplo buscaremos la palabra "prueba" en el directorio prueba dentro de todos los archivos del directorio, podríamos delimitar la búsqueda por ejemplo buscando solo dentro de los archivos de texto poniendo *.txt en vez de *.* o buscando en los archivos de "Word" poniendo *.doc, etc...
En el segundo ejemplo al añadirle -r le estamos diciendo que queremos buscar la palabra "prueba" en todos los archivos y subdirectorios del directorio prueba.
En el tercer ejemplo al añadirle el -l el resultado nos mostrará solo el nombre del fichero que contiene la palabra prueba.
Otro posibilidad es usar -e para añadir varias palabras o cadenas de texto:
grep -r -e “prueba” -e “grep” /home/usuario/prueba/
Una opción más y para mi imprescindible, sobretodo cuando encontramos muchos resultados es hacer que nos cree un archivo con los resultados. Simplemente tenemos que añadir ">> nombrefichero.txt y nos generará un archivo de texto con los resultados. Ejemplo:
grep -r "prueba" /home/usuario/prueba/ >> prueba.txt
EJEMPLOS
Ejemplos Básicos del comando linux grep
1 Encontrar una palabra en un archivo
Si tenemos un archivo de texto llamado INSTALL y deseamos buscar la palabra Web podemos ejecutar el comando grep de la siguiente forma:
$ grep Web INSTALL
La salida de grep te mostrará todas las lineas que contenga la cadena de texto “Web” y en mi caso muestra esta salida:
Web browser support:
2 encontrar todas las palabras sin importar mayúsculas o minúsculas
$ grep -i web INSTALL
en mi caso muestra una lista extensa de lineas donde está Web, web o WEB y muestro solo un fragmento de esta salida
- A web server running PHP 5.2.0 or higher, with PCRE.... Web browser support: content of the "web" directory in your webserver's document root. If you ...
3 Mostrar cuantas coincidencias se han encontrado
En ocasiones no es necesario leer el texto donde se encuentra la cadena de texto o palabra que buscamos, pero, podemos necesitar saber cuantas veces está aparece en el archivo aquí te muestro un ejemplo de cuantas veces aparece la “web” con las opciones anteriores.
$ grep -c Web INSTALL 1 $ grep -c web INSTALL 5 $ grep -c -i "web" INSTALL 6
Este ejemplo muestra claramente que al utilizar la opción -i se consideras las coincidencias sin importar mayúsculas o minúsculas.
4 cuando necesitas saber en cual línea está lo que buscas
Para saber en cual línea está el texto o la palabra que buscas utilizas la opción -n asi:
$ grep -n Web INSTALL 8:Web browser support:
En esta salida te muestra al inicio del texto “8:” que es el número de la línea en donde está la la palabra “Web” dentro del archivo INSTALL.
5 Encontrar un texto en un listado de archivos
El comando linux grep también te puede ayudar a encontrar un texto que se encuentre en una lista de archivos y te puede indicar en que archivo se ha encontrado, aquí te muestro un ejemplo simple de esta opcion:
$ grep -l you ./* ./INSTALL ./LICENSE ./README
Esto te indica que la palabra “you” se encuentra en los archvios INSTALL, LICENCE y README y si estuvieran dentro de otros directorios te mostraría la ruta usando la opción -r para hacer la búsqueda de forma recursiba en los directorios que se encuentran en la ruta de búsqueda.
Espero que grep te sea de gran utilidad, para mí es uno de los comandos que uso casi a diario por que me permite tener información rápida y sencilla cuando administro un servidor linux. Te recomiendo que también veas el siguiente post para que veas como usar grep con tuberias o pipes.
A continuación, en cada ejemplo, intentaremos trabajar con dos archivos de demostración iguales a los siguientes:
[CODE]
$ cat archivo_demo1
[CODE]
$ cat archivo_demo1
ESTA ES LA PRIMER LINEA EN MAYUSCULAS DE ESTE ARCHIVO
esta es la primer linea en minusculas de este archivo
Esta Es La Primer Linea Con El Primer Caracter De Cada Palabra Con Mayuscula
esta es la primer linea en minusculas de este archivo
Esta Es La Primer Linea Con El Primer Caracter De Cada Palabra Con Mayuscula
Hay dos lineas vacias sobre esta
Y esta es la ultima linea
$ cp /tmp/archivo_demo1 /tmp/archivo_demo2
[/CODE]
Y esta es la ultima linea
$ cp /tmp/archivo_demo1 /tmp/archivo_demo2
[/CODE]
- Uso básico, buscar una cadena en un archivo
[CODE]
$ grep “esta” archivo_demo1
esta es la primer linea en minusculas de este archivo
Hay dos lineas vacias sobre esta
Y esta es la ultima linea
[/CODE]
$ grep “esta” archivo_demo1
esta es la primer linea en minusculas de este archivo
Hay dos lineas vacias sobre esta
Y esta es la ultima linea
[/CODE]
- Buscar una cadena en varios archivos
[CODE]
$ grep “esta” archivo_demo*
archivo_demo1:esta es la primer linea en minusculas de este archivo
archivo_demo1:Hay dos lineas vacias sobre esta
archivo_demo1:Y esta es la ultima linea
archivo_demo2:esta es la primer linea en minusculas de este archivo
archivo_demo2:Hay dos lineas vacias sobre esta
archivo_demo2:Y esta es la ultima linea
[/CODE]
$ grep “esta” archivo_demo*
archivo_demo1:esta es la primer linea en minusculas de este archivo
archivo_demo1:Hay dos lineas vacias sobre esta
archivo_demo1:Y esta es la ultima linea
archivo_demo2:esta es la primer linea en minusculas de este archivo
archivo_demo2:Hay dos lineas vacias sobre esta
archivo_demo2:Y esta es la ultima linea
[/CODE]
- Buscar sin coincidencia entre mayúsculas y minúsculas (uso del argumento -i)
[CODE]
$ grep -i “esta” archivo_demo1
ESTA ES LA PRIMER LINEA EN MAYUSCULAS DE ESTE ARCHIVO
esta es la primer linea en minusculas de este archivo
Esta Es La Primer Linea Con El Primer Caracter De Cada Palabra Con Mayuscula
Hay dos lineas vacias sobre esta
Y esta es la ultima linea
[/CODE]
$ grep -i “esta” archivo_demo1
ESTA ES LA PRIMER LINEA EN MAYUSCULAS DE ESTE ARCHIVO
esta es la primer linea en minusculas de este archivo
Esta Es La Primer Linea Con El Primer Caracter De Cada Palabra Con Mayuscula
Hay dos lineas vacias sobre esta
Y esta es la ultima linea
[/CODE]
- Buscar expresiones regulares
[CODE]
$ grep “esta.*linea” archivo_demo1
esta es la primer linea en minusculas de este archivo
Y esta es la ultima linea
[/CODE]
$ grep “esta.*linea” archivo_demo1
esta es la primer linea en minusculas de este archivo
Y esta es la ultima linea
[/CODE]
En este ejemplo buscamos aquellas líneas que contienen la palabra “esta” y luego de cualquier texto (*) continúan con “linea”. Para más operadores de expresiones regulares se recomienda leer la documentación del grep.
- Buscar palabras completas (excluir subcadenas) (uso del argumento -w)
[CODE]
$ grep -iw “de” archivo_demo1
[/CODE]
$ grep -iw “de” archivo_demo1
[/CODE]
- Buscar N líneas luego de la coincidencia
[CODE]
$ grep -A2 “ESTA” archivo_demo1
ESTA ES LA PRIMER LINEA EN MAYUSCULAS DE ESTE ARCHIVO
esta es la primer linea en minusculas de este archivo
Esta Es La Primer Linea Con El Primer Caracter De Cada Palabra Con Mayuscula
$grep -A1 “ESTA” archivo_demo1
ESTA ES LA PRIMER LINEA EN MAYUSCULAS DE ESTE ARCHIVO
esta es la primer linea en minusculas de este archivo
[/CODE]
$ grep -A2 “ESTA” archivo_demo1
ESTA ES LA PRIMER LINEA EN MAYUSCULAS DE ESTE ARCHIVO
esta es la primer linea en minusculas de este archivo
Esta Es La Primer Linea Con El Primer Caracter De Cada Palabra Con Mayuscula
$grep -A1 “ESTA” archivo_demo1
ESTA ES LA PRIMER LINEA EN MAYUSCULAS DE ESTE ARCHIVO
esta es la primer linea en minusculas de este archivo
[/CODE]
- Buscar N líneas antes de la coincidencia
[CODE]
$ grep -B1 “ultima” archivo_demo1
Hay dos lineas vacias sobre esta
Y esta es la ultima linea
[/CODE]
$ grep -B1 “ultima” archivo_demo1
Hay dos lineas vacias sobre esta
Y esta es la ultima linea
[/CODE]
- Buscar N líneas alrededor de la coincidencia
[CODE]
$ grep -C1 “minusculas” archivo_demo1
ESTA ES LA PRIMER LINEA EN MAYUSCULAS DE ESTE ARCHIVO
esta es la primer linea en minusculas de este archivo
Esta Es La Primer Linea Con El Primer Caracter De Cada Palabra Con Mayuscula
[/CODE]
$ grep -C1 “minusculas” archivo_demo1
ESTA ES LA PRIMER LINEA EN MAYUSCULAS DE ESTE ARCHIVO
esta es la primer linea en minusculas de este archivo
Esta Es La Primer Linea Con El Primer Caracter De Cada Palabra Con Mayuscula
[/CODE]
- Resaltar los resultados
Es necesario setear las variables de entorno GREP_OPTIONS y GREP_COLOR
[CODE]
$ export GREP_OPTIONS=’–color=auto’ GREP_COLOR=’100;8′
[/CODE]
[CODE]
$ export GREP_OPTIONS=’–color=auto’ GREP_COLOR=’100;8′
[/CODE]
- Buscar en archivos recursivamente (uso del argumento -r)
Cuando necesitas buscar una cadena en los archivos del directorio actual y sus subdirectorios. El siguiente ejemplo buscaría la palabra “auto” en todos los archivos del directorio actual y sus subdirectorios.
[CODE]
$ grep -r “auto” *
[/CODE]
[CODE]
$ grep -r “auto” *
[/CODE]
- Buscar no coincidencias (uso del argumento -v)
[CODE]
$ grep -iv “primer” archivo_demo1
$ grep -iv “primer” archivo_demo1
Hay dos lineas vacias sobre esta
Y esta es la ultima linea
[/CODE]
Y esta es la ultima linea
[/CODE]
- Mostrar las lineas de varias no coincidencias (uso del argumento -v y los argumentos -e)
[CODE]
$ cat archivo_demo3
a
b
c
d
$ cat archivo_demo3
a
b
c
d
$ grep -v -e “a” -e “b” -e “c” archivo_demo3
d
[/CODE]
d
[/CODE]
- Contar el número de ocurrencias (uso del argumento -c)
[CODE]
$ grep -c “esta” archivo_demo1
3
$ grep -ic “esta” archivo_demo1
5
[/CODE]
$ grep -c “esta” archivo_demo1
3
$ grep -ic “esta” archivo_demo1
5
[/CODE]
- Mostrar solo los nombres de los archivos los cuales contienen coincidencias (uso del argumento -l)
[CODE]
$ grep -l “esta” archivo_demo*
archivo_demo1
archivo_demo2
[/CODE]
$ grep -l “esta” archivo_demo*
archivo_demo1
archivo_demo2
[/CODE]
- Mostrar solo la cadena buscada (uso del argumento -o)
Por defecto el comando grep muesrta la línea completa de la cadena o patrón dado, pero si solo quieres mostrar dicha cadena o patrón puedes utilizar el argumento -o.
Nota la diferencia en el ejemplo:
[CODE]
$ grep “es.*linea” archivo_demo1
esta es la primer linea en minusculas de este archivo
Y esta es la ultima linea
$
$ grep -o “es.*linea” archivo_demo1
esta es la primer linea
esta es la ultima linea
[/CODE]
[CODE]
$ grep “es.*linea” archivo_demo1
esta es la primer linea en minusculas de este archivo
Y esta es la ultima linea
$
$ grep -o “es.*linea” archivo_demo1
esta es la primer linea
esta es la ultima linea
[/CODE]
- Mostrar la posición en el archivo de la conicidencia (uso de argumento -b)
[CODE]
$ grep -bo “es.*linea” archivo_demo1
54:esta es la primer linea
222:esta es la ultima linea
$
$ grep -bo “es.*linea” archivo_demo*
archivo_demo1:54:esta es la primer linea
archivo_demo1:222:esta es la ultima linea
archivo_demo2:54:esta es la primer linea
archivo_demo2:222:esta es la ultima linea
[/CODE]
$ grep -bo “es.*linea” archivo_demo1
54:esta es la primer linea
222:esta es la ultima linea
$
$ grep -bo “es.*linea” archivo_demo*
archivo_demo1:54:esta es la primer linea
archivo_demo1:222:esta es la ultima linea
archivo_demo2:54:esta es la primer linea
archivo_demo2:222:esta es la ultima linea
[/CODE]
- Mostrar la fila en el archivo de la conicidencia (uso de argumento -n)
[CODE]
$ grep -no “es.*linea” archivo_demo*
archivo_demo1:2:esta es la primer linea
archivo_demo1:7:esta es la ultima linea
archivo_demo2:2:esta es la primer linea
archivo_demo2:7:esta es la ultima linea
[/CODE]
2.RESUMEN$ grep -no “es.*linea” archivo_demo*
archivo_demo1:2:esta es la primer linea
archivo_demo1:7:esta es la ultima linea
archivo_demo2:2:esta es la primer linea
archivo_demo2:7:esta es la ultima linea
[/CODE]
El comando grep es uno de los más útiles en Linux. Bien utilizado nos ahorra mucho tiempo a la hora de buscar en archivos y documentos. Puede que al principio no le des mucha importancia, pero cuando lo usas con soltura se vuelve imprescindible.
¿Qué hace el comando grep? Algo muy simple, busca determinada palabra o frase entre los archivos de texto. Si el termino buscado aparece varias veces en un mismo archivo, nos muestra varias lineas de resultado, una por cada coincidencia.
Para entender su funcionamiento, nada mejor que un ejemplo:
Con ese comando, buscamos la palabra curso en cualquier fichero del directorio Documentos. Esto incluye las carpetas que existan dentro de Documentos (hemos indicado esto al escribir -r). Si deseamos buscar en un fichero concreto, sustituimos * por el nombre del fichero.
grep -r curso /home/steven/Documentos/*Con ese comando, buscamos la palabra curso en cualquier fichero del directorio Documentos. Esto incluye las carpetas que existan dentro de Documentos (hemos indicado esto al escribir -r). Si deseamos buscar en un fichero concreto, sustituimos * por el nombre del fichero.
Hay un detalle importante, el comando anterior diferencia entre mayúsculas y minúsculas. Está buscando la palabra curso, que no es igual que Curso. Por norma general, nos resulta más interesante que no haga esta distinción. Para que busque el término, independientemente de mayúsculas/minúsculas:
Si el termino a buscar contiene más de una palabra, se debe indicar entre comillas. En el siguiente ejemplo buscamos Curso Linux dentro del fichero notas.txt:
grep -ir curso /home/steven/Documentos/*Si el termino a buscar contiene más de una palabra, se debe indicar entre comillas. En el siguiente ejemplo buscamos Curso Linux dentro del fichero notas.txt:
grep -i “curso linux” /home/steven/Documentos/notas.txt
3.SUMMARY
The grep command is one of the most useful in Linux. Well used saves us a lot of time when searching for files and documents. It may at first not give it much thought, but when you use it with ease becomes imperative.
What does the grep command? Something very simple, looks certain word or phrase in the text files. If the search term appears several times in a single file, it shows several lines of outcome, one for each match.
To understand how it works, nothing better than an example:
course grep -r / home / Steven / Documents / *
With this command, we look up the word in any file during Documents directory. This includes folders that exist within Documents (we indicated this by writing -r). If we want to find a particular file, we substitute * for the filename
There is an important detail, the above command is case-sensitive. You are looking for the word course, that is not the same course. In general, we find it interesting that we make this distinction. To search for the term, regardless of upper / lower case:
grep -ir course / home / Steven / Documents / *
If your search term has more than one word, you must specify quotes. In the following example we seek within the notas.txt Course Linux file:
grep -i "course linux" /home/steven/Documentos/notas.txt
4.CONCLUSIONES
*El comando grep nos permite buscar, dentro de los archivos, las líneas que concuerdan con un patrón. Bueno, si no especificamos ningún nombre de archivo, tomará la entrada estándar, con lo que podemos encadenarlo con otros filtros.
*Por defecto, grep imprime las líneas encontradas en la salida estándar. Es decir, que podemos verlo directamente la pantalla, o redireccionar la salida estándar a un archivo
5.RECOMENDACIONES
el comando grep sirve para poder filtrar el contenido de un archivo para realizar determinadas busquedas.
checate esta pagina, hay ejemplos entre los cuales se encuentra el relacionado a tu pregunta.
6.APRECIACION DEL EQUIPO
7.GLOSARIO DE TERMINOS
8.LINKOGRAFIA
*http://www.comoinstalarlinux.com/linux-grep/
*http://siemprelinuxeando.blogspot.pe/2012/06/como-usar-grep-para-encontrar-una.html
*https://es.wikipedia.org/wiki/Grep
*http://www.comoinstalarlinux.com/linux-grep/
*http://siemprelinuxeando.blogspot.pe/2012/06/como-usar-grep-para-encontrar-una.html
*https://es.wikipedia.org/wiki/Grep
No hay comentarios:
Publicar un comentario