Fundamentos de BASH - Expresiones regulares

7 - Expresiones regulares

[editar]
Monografía creado por David F. Madrid. Extraido de: http://www.nautopia.net/archives/es/linux_administracion/fundamentos_de_bash/introduccion.php
11 de Octubre de 2005
Las expresiones regulares es una característica fuertemente unida a la consola ya que permiten manejar con mucha potencia nombres de archivos largos, afinar en las búsquedas y ejecutar comandos sobre grupos de archivos de nuestra elección. El analizador de expresiones regulares es una función(consultar man grep o la documentación de perl) que devuelve uno si el texto a comparar entra dentro de lo que buscabamos con la expresión regular usado o cero si no es así. Comandos que soportan las expresiones regulares son vi, emacs, grep, egrep y la mayoría de los comandos de consola. No todos los comandos sorportan expresiones regulares de la misma forma ya que hay varios tipos(básicas, extendidas, de perl, etc), tenedlo en cuenta u os hareis un lio.

Vamos a ver algunos de los carácteres que se usan para construir expresiones regulares y algún ejemplo, porque aunque puedan ser liosas al principio(que sin duda lo son en expresiones complejas) merece la pena ya que nos ahorrarán mucho trabajo. Para trabajar con ellas utilizaremos egrep(extended grep), una herramienta que analiza una entrada suministrada y la compara con nuestra expresión regular, aunque muchos de los ejemplos funcionan igual si por ejemplo usamos el comando ls pero así podremos ver como usarlo en los scripts por ejemplo.

Primero crearemos unos cuantos archivos de ejemplo para probar nuestros patrones:

Ej:

# touch huevo hu3vo hueeevo nauto naaauto a00sor b00sor


Escape de metacarácteres y carácteres especiales

Si queremos tratar alguno de los carácteres más abajo descritos como un literal en nuestro patrón debemos anteponer la barra hacia atrás \ para que la función no lo interprete

Corchetes

Sirven para hacer coincidir cualquier carácter(pero sólo uno) que se encuentre entre ellos

Ej:

# ls | egrep "[ab]00sor"
a00sor
b00sor



Paréntesis

Hacen coincidir cualquier carácter(uno o más) que se encuentre entre ellos.

Ej:

# ls | egrep "a(00)sor"
a00sor


Cuantificadores

* Coincide con cualquier carácter que le preceda cero o más veces

Ej:

# ls | egrep "na*uto"
naaauto
nauto


? Coincide con cualquier carácter cero o más veces

Ej:

# ls | egrep "a*sor"
a00sor
b00sor


+ Coincide con cualquier carácter que lo preceda una o más veces

Ej:

# ls | egrep "a0+sor"
a00sor


{} Establecen el número de veces que se repetirá el carácter que lo precede en la expresión

Ej:

# ls | egrep ".0{2}sor"
a00sor
b00sor


Metacarácteres

| Coincide con cualquier carácter o carácteres a cada lado de la barra

Ej:

# ls | egrep "[a|b]00*"
a00sor
b00sor


[^] Coincide con cualquier carácter no listado después del circunflejo

. Coincide cuando es usado dentro de una expresión con cualquier carácter(pero sólo uno siempre que no sea cero.

Ej:

# ls | egrep "hu.vo"
hu3vo
huevo


Anclas Se utilizan para especificar en que posición se da el patrón.

^ Especifica que el patrón debe estar en el principio de la línea

Ej:

# ls | egrep "^h.*"
hu3vo
hueeevo
huevo


$ Especifica que el patrón debe de estar al final de la línea

\< Especifica que el patrón debe de estar al principio de una palabra

\> Especifica que el patrón debe de estar al final de una palabara

\b Especifica que el patrón debe de estar al principio o al final de una palabra

\B Especifica que el patrón no debe de estar al principio ni al final de una palabra

Substituciones

Una de las utilidades más potentes de las expresiones regulares es la sustitución, algo que nos será muy útil si, por ejemplo, queremos sustituir un patrón determinado de nombres de archivo por otro. Para ello, utilizamos el comando sed un editor de flujos de datos separando entre barras / el patrón a buscar de lo que lo sustituirá. Utilizaremos el modificador s al principio de la línera para indicar a sed que debe sustituir, g al final para indicar que debe hacerlo en todas las ocurrencias que encuentre en la línea y el archivo donde debe buscar el patrón. Para ellos rellenaremos un archivo con una línea a sustuir.

Ej:

# echo nautopata > huevo
# sed "s/nauto*/psico/g" huevo
psicopata


Referencias

Las referencias nos permiten almacenar en un buffer una expresión que coincida con nuestro patrón para reutilizarla luego. Al utilizar paréntesis en un expresión se almacena en un buffer los carácteres que coinciden con lo situado dentro de estos y para hacerlo referencia después utilizamos el modificador \número, donde número es el paréntesis al que hacemos referencia.

Ej:

# sed "s/.*\(pata\)/psico\1/" huevo
psicopata
[editar]

9 opiniones

Abastos.

Genial.
Una otra opción.

Excusame por mi terrible español…

pero hay otra opción para aprender bash. En www.julioneves.com a eleja los links “conversa de bar”. Allí encontrarás un libro entero de shell scripting (254 páginas en el formato a4) traducido por la comunity.
Linux.

Mas comandos o todos de linux en donde la puedo encontrar

este recurso es muy vacamo y educatvo.
Muy buenos.

Es muy bueno para nosotros los que buscamoenla red informacion.
Variables entorno linux.

Por fis haber si aguen me pasa un resume de variables de entoernoa a linux.
1 2 | siguiente >

Monografías relacionados con 'Fundamentos de BASH'

No conocerás lo que es Linux hasta que no conozcas la consola. La consola es... Más »
La cocina española es rica en salsas sobre la base de cebollas, tomates ajíes; cazuelas... Más »
Una shell es un programa encargado de hacer de interfaz entre el usuario y el... Más »

Autor y licencia de 'Fundamentos de BASH'

This article is licensed under a Creative Commons License
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.