Comando grep y expresiones regulares

Preview:

DESCRIPTION

comando grep - linux

Citation preview

Comando grep yExpresiones RegularesProf. Pablo Macónpablomacon@gmail.comhttp://soii-its.blogspot.com

Comando grepUna de las funciones elementales que debe satisfacer una base de datos es permitir consultar los datos guardados en ella.El comando que nos va a permitir efectuar búsquedas dentro de nuestros archivos de texto será: grep

Comando grepEs un filtro que se aplica a la entrada estándar y que tiene como resultado mostrar en la salida estándar la o las líneas que coinciden con la o las expresiones marcadas. Esas expresiones pueden ser simples palabras o patrones complejos

Comando grepSintaxis:grep [-opciones] PATRÓN [archivo/s]

Ejemplo sencillo:grep “usuario” /etc/passwd

Comando grepTambién podemos combinarlo concatenándolo a otros comandos:

cat /etc/passwd | grep “usuario”

ls /bin | grep “am”

Comando grepOpciones:-e permite introducir varios patrones de

búsquedagrep –e “garcia” –e “flores” usuariosgrep –e “lopez” –e “2005” discos

Comando grepOpciones:-i ignora distinción entre mayúsculas y

minúsculas (ignore case)grep –i “garcia” usuarios

Trae las líneas que contienen Garcia GARCIA garcia GArcia, pero no García ¿por qué?

Comando grepOpciones:-v muestra las líneas que no coinciden

con el patrón buscadogrep –v “garcia” usuarios

Trae las líneas que NO contienen garcia

Comando grepOpciones:-w busca coincidencias de palabras completasgrep –w “garcia” usuarios

Trae las líneas que contienen garcia pero no si contiene garcias

Comando grepOpciones:-q modo silencioso, no muestra nada en la salida estándar ¿para qué puede servir entonces?

Comando grepOpciones:-q modo silencioso, no muestra nada en la salida estándar Por ejemplo para utilizarlo como condición en un if y que no muestre lo que estoy buscando

Comando grepOpciones:-q modo silencioso, no muestra nada en la salida estándar if grep –q “usuario” /etc/passwdthen echo “usuario autorizado”else echo “usuario no autorizado”

EXPRESIONES REGULARES

Expresiones regularesSon patrones regulares que permiten buscar cosas que tienen una forma determinada pero que no siempre es igual:Direcciones de e-mail, cédulas de identidad¿Qué ejemplos se les ocurren?

Expresiones regularesPor ejemplo las direcciones de e-mail se pueden descomponer de:Una serie de caracteres que pueden incluir, letras, números y algunos símbolos especiales + @ + otros caracteres + . + com/gub/edu/tv/us/fr/uy

Expresiones regularesPor ejemplo las ip se componen de:Un número del 0 al 255 + . + un número del 0 al 255 + . + un número del 0 al 255 + . + un número del 0 al 255

Expresiones regularesNuestro trabajo es encontrar esas regularidades que luego nos van a simplificar las cosas, porque si queremos buscar todos los usuarios que tienen cédula ¿cómo podríamos hacerlo si no es con expresiones regulares?

EXPRESIONES REGULARES - REGLAS

Expresiones regulares - reglas1 - uno o varios caracteres cualquiera, encerrados en comillas simples van a tener como resultado de la búsqueda a esos mismos caracteres en el mismo orden

grep ‘pablo’ /etc/passwd

Expresiones regulares - reglas2 – un . (punto) significa cualquier carácter, pero solo uno. Es como el ? que utilizamos con ls

grep ‘.ash’ /etc/passwd

Expresiones regulares - reglas3 – los corchetes (paréntesis rectos) se usan para encerrar un rango de caracteres o varios caracteres diferentes, pero solo un carácter por vez:

grep ‘100[0-9]’ /etc/passwd

Expresiones regulares - reglas4 – ^ es la negación, va a traer las líneas que no contengan los caracteres que le siguen

grep ‘alo[^n]so’ /etc/passwd

Expresiones regulares - reglas5 – las llaves encierran el número de veces que se repite el/los caracteres anteriores, si son varios caracteres tenemos que agruparlos con paréntesisgrep –iE ‘([0-9a-f][0-9a-f]:){5}([0-9a-f][0-9a-f])’ regex

Expresiones regulares - reglas• 6 – los símbolos de menor y mayor nos

sirven para delimitar la palabra• < para inicio de palabra• > para fin de palabra• Pero necesitamos poner la \ delante de

ellos

Expresiones regulares - reglas• 6 – los símbolos de menor y mayor nos

sirven para delimitar la palabra•Así para buscar las palabras de 4 letras

mínimo y 5 máximo ponemos:grep –iE ‘\<[a-z]{4,5}\>’ /etc/passwd

Expresiones regulares - reglasLas cédulas de los usuariosgrep –E ‘[0-9]{6-7}-[0-9]’ usuarios

una dirección ipgrep –E ‘([0-9]{1,3}\.){3}([0-9]{3})’ usuarios

Recommended