Anda di halaman 1dari 5

Captulo 10 Expresiones regulares

? * {n} + {,m} {n,m} pablo ^pablo pablo$ ^pablo$ ni[oa] ni[^aeiou]o ga.o ^....$ ^\. ^[^.] nos* nio *nio* [a-z][a-z]* [a-z]+ [^0-9A-Z] [a-zA-Z] [Ax5] nio|nia|nada (s|arb)usto ga?t[oa] \<ga o\> \<nio\> o\{2,\} \t \r \n \a \e \f \v \x El elemento precedente es opcional y debe coincidir al menos una vez. El elemento precedente debe coincidir cero o ms veces. El elemento precedente debe coincidir exactamente n veces. El elemento precedente debe coincidir una o ms veces. El elemento precedente es opcional y debe coincidir al menos m veces. El elemento precedente debe coincidir al menos n veces pero no ms de m veces. La cadena pablo. La cadena pablo al principio de la linea. La cadena pablo al final de la linea. La cadena pablo formando una nica lnea. La cadena nio o nia. La tercera letra no es una vocal minscula. La tercera letra es cualquier carcter. Cualquier lnea que contenga 4 caracteres. Cualquier lnea que comienza por punto. Cualquier lnea que no comienza por punto. nio, nios, nioss, niosss, etc nio entre comillas dobles. nio con o sin comillas dobles. una o ms letras minsculas. una o ms letras minsculas (slo vlido en algunas aplicaciones). cualquier carcter que no sea ni nmero ni letra mayscula. cualquier letra sea mayscula o minscula. cualquier carcter que sea A, x o 5. una de las tres palabras. la palabra susto o arbusto. gato, gata, gasto, gaita, etc. cualquier palabra que empiece por ga. cualquier palabra que termine por o la palabra nio dos o ms oes en una misma fila. Representa un tabulador. Representa el "retorno de carro" o "regreso al inicio" o sea el lugar en que la lnea vuelve a iniciar. Representa la "nueva lnea" el carcter por medio del cual una lnea da inicio. Representa una "campana" o "beep" que se produce al imprimir este carcter. Representa la tecla "Esc" o "Escape" Representa un salto de pgina. Representa un tabulador vertical. Se utiliza para representar caracteres ASCII o ANSI si conoce su

\u

\d \w \s \D \W \S \A \Z \b \B

cdigo. De esta forma, si se busca el smbolo de derechos de autor y la fuente en la que se busca utiliza el conjunto de caracteres Latin-1 es posible encontrarlo utilizando "\xA9". Se utiliza para representar caracteres Unicode si se conoce su cdigo. "\u00A2" representa el smbolo de centavos. No todos los motores de Expresiones Regulares soportan Unicode. El .Net Framework lo hace, pero el EditPad Pro no, por ejemplo. Representa un dgito del 0 al 9. Representa cualquier carcter alfanumrico. Representa un espacio en blanco. Representa cualquier carcter que no sea un dgito del 0 al 9. Representa cualquier carcter no alfanumrico. Representa cualquier carcter que no sea un espacio en blanco. Representa el inicio de la cadena. No un carcter sino una posicin. Representa el final de la cadena. No un carcter sino una posicin. Marca el inicio y el final de una palabra. Marca la posicin entre dos caracteres alfanumricos o dos noalfanumricos.

Buscar una expresion regular


El comando grep toma una expresin regular de la lnea de comandos, lee la entrada estndar o una lista de archivos, e imprime las lneas que contengan coincidencias para la expresin regular. Opciones : -c -e PATRN -f ARCHIVO -H -r -i -w -v -l -c Modificar la salida normal del programa, en lugar de imprimir por salida estndar las lneas coincidentes, imprime la cantidad de lneas que coincidieron en cada archivo. Usar PATRN como el patrn de bsqueda, muy til para proteger aquellos patrones de bsqueda que comienzan con el signo -. Obtener los patrones del archivo ARCHIVO Imprimir el nombre del archivo con cada coincidencia. Buscar recursivamente dentro de todos los subdirectorios del directorio actual. Buscar maysculas o minsculas. Buscar palabra completa. Buscar lo contrario. Mostrar solo los archivos que contenga la palabra buscada. Contar la cantidad de ocurrencia.

Ejemplo : # grep 'root' /etc/passwd # grep -i 'root' /etc/passwd # grep -iw 'root' /etc/passwd # grep -v 'root' /etc/passwd # grep -l 'root' /etc/* | more

# grep -c 'root' /etc/* | more Si queremos que tenga color la bsqueda realizamos la siguiente exportacin : # export GREP_OPTIONS='--color=auto' GREP_COLOR='100;8'

Modificar archivos, buscar, etc


El comando sed nos permite, de una forma cmoda, borrar lneas, registros o sustituir cadenas de caracteres dentro de las lneas, etc. Opciones : -n, --quiet, --silent -e guin, --expresion=guin -f fichero-guin, --file=fichero-guin --follow-symlinks -i[SUFIJO], --inplace[=SUFIJO] -l N, --line-length=N --posix -r, --regexp-extended -s, --separate -u, --unbuffered --help --version Comandos : d i s p \+ N y Ejemplo : # cp /etc/passwd . # sed '1d' passwd | more # sed '1,5d' passwd | more # sed '1i Hola Mundo' passwd | more # sed 's/root/pepe/' passwd | more # sed -n '1,4p' passwd Borrar linea. Insertar. Sustituir. Listar. Mas de una expresin. Fuerza la lectura de la siguiente lnea en la iteracin actual. Sustituir. Suprime la muestra automtica del espacio de patrones. Agrega el guin a la lista de rdenes para ejecutar. Agrega el contenido del fichero guin a la lista de rdenes para ejecutar. Selecciona solamente una columna para mostrar. Edita ficheros en el lugar (crea un respaldo si se da una extensin). Especifica la longitud de corte de lnea deseado para la orden `l'. Desactiva todas las extensiones de GNU. Utiliza expresiones regulares extendidas en el guin. Considera los ficheros como separados en lugar de un solo flujo, largo y continuo. Carga cantidades mnimas de datos de los ficheros de entrada y vaca los almacenamientos temporales de salida con ms frecuencia. Ayuda. Version.

# sed -n '/root/p' passwd o # grep 'root' passwd Borra desde root hasta nobody inclusive. # sed '/root/,/nobody/d' passwd Si queremos obtener un listado slo de los directorios (las filas que comienzan con la letra "d"). Podramos utilizar el sed para borrar las entradas que no comienzan con esa letra: # ls -l / | sed '/^d/!d' Como vemos el smbolo de exclamacin ! detrs de la expresin regular niega la condicin. Debera leerse como borrar todas las lneas que no comiencen con la letra 'd' Otra forma : # ls -l / | sed '/^d/p' Sustituir los valores 123 por 456: # echo 123 | sed 'y/[123]/[456]/' 456 Sacar los tabuladores de un archivo y reemplazarlo por un espacio : # vi texto.txt Hola Mundo ! !!!!

# cat texto.txt | sed 's/\t\+/ /g' Sacar los mas de un espacio de un archivo y reemplazarlo por un espacio : # vi texto.txt Hola Mundo ! !!!!

# cat texto.txt | sed 's/ \+/ /g' Procesando varias lineas # vi agenda.txt Registro: 1 Nombre: Anibal Telefono: 621-229 Registro: 2

Nombre: Hector Telefono: 562-245 Registro: 3 Nombre: Pablo Telefono: 622-354 Y queremos obtener lo siguiente : 1;Anibal;621-229 2;Hector;562-245 3;Pablo;622-354 Una solucin es poder leer de a una lnea a la vez. Este problema se resuelve con el comando N, que fuerza la lectura de la siguiente lnea en la iteracin actual. # sed 'N;N;N;s/\n/;/g;s/^Registro: \(.*\);Nombre: \(.*\);Telefono: \(.*\);$/\1;\2;\3/' agenda.txt

Son 3 lneas (N). Que reemplace el retorno de carro \n por un ; buffer = "Registro: 1;Nombre: Anibal;Telefono: 621-229;" Sacar las palabras Registro: , Nombre: , Telefono: y el punto y coma de la linea. Los parntesis \(.*\) representa a cada valor \1, \2 y \3.

Anda mungkin juga menyukai