El Shell Bash de GNU/Linux 4 – Expresiones regulares

En el anterior artículo “El Shell Bash de GNU/Linux 3 – Variables de entorno” vimos las variables y los comandos que podemos usar para utilizarlas.

Aquí veremos las Expresiones regulares.

  1. El Shell Bash de GNU/Linux 1 – Introducción
  2. El Shell Bash de GNU/Linux 2 – Tuberías y filtros
  3. El Shell Bash de GNU/Linux 3 – Variables de entorno
  4. El Shell Bash de GNU/Linux 4 – Expresiones regulares
  5. El Shell Bash de GNU/Linux 5 – Sistema de ficheros
  6. El Shell Bash de GNU/Linux 5.1 – El árbol de directorios estándar
  7. El Shell Bash de GNU/Linux 5.2 – Tipos de ficheros
  8. El Shell Bash de GNU/Linux 5.3 – nombres, rutas absolutas y relativas
  9. El Shell Bash de GNU/Linux 5.4 – Permisos
  10. El Shell Bash de GNU/Linux 5.5 – Listar ficheros
  11. El Shell Bash de GNU/Linux 5.6 – Comandos para trabajas con archivos y carpetas
  12. El Shell Bash de GNU/Linux 5.7 – Otros comandos útiles
  13. El Shell Bash de GNU/Linux 5.8 – Montaje de sistemas de ficheros

4 Expresiones regulares

Ciertos comandos como grep permiten el uso de expresiones regulares para formar patrones de filtro / búsqueda, mucho más potentes que los meta-caracteres del Shell.

Un ER está formada por caracteres combinados con operadores.

Operadores

^ Principio de línea

$ Final de linea

\< Principio de palabra

\> Final de palabra

. Cualquier carácter excepto salto de línea

[] Conjunto de caracteres

[^] Cualquier carácter no contenido

[-] Rango

* Cero o más ocurrencias del elemento que lo precede

+ Uno o más ocurrencias del elemento que lo precede

? El elemento precedente es opcional

() Agrupación

| O uno u otro

{n} El elemento precedente se repite n veces

{n,} El elemento precedente se repite al menos n veces

{n,m} El elemento precedente se repite al menos n y no más de m veces

\ Escape {\t, \n,\., \*, …} se usa para tratar de forma normal un carácter especial

Fijaros que aquí el significado del operador * no es el mismo que el comodín *, lo mismo pasa con el operador ? y el comodín ?.

Si necesitamos utilizar en nuestro patrón uno de los caracteres especiales deberemos protegerlo para que se interprete como literal:

\* es un asterisco, no cero o más ocurrencias de \ (eso sería \\* en todo caso)

Ejemplo: Sea el archivo texto.txt con el contenido siguiente:

123a
a123
a12b
567

Las siguientes ER cogerían en cada caso las líneas:

^[0-9] → 123a , 567

que empiecen (^) por un dígito ([0-9])

^[0-9]*$ → 567

que sólo contengan dígitos, a la anterior le añado el *, también funcionaría el +,

y $ (final de linea), así fuerzo a que entre principio y final de linea haya 0 o más números.

^[a-Z][0-9]*$ → a123

que empiecen por letra y el resto sean números

^[a-Z][0-9]*[a-Z]$ → a12b

que empiecen y terminen por letra y en medio todo números

Podéis testear los ejemplos creando un fichero texto.txt con las 4 líneas y utilizando cat y grep:

cat texto.txt | grep ^[a-Z][0-9]*[a-Z]$

En el siguiente artículo “5. Sistema de ficheros” trataremos de empezar una serie dedicada al Sistema de ficheros y los comandos relacionados. Espero que os resulte interesante, hasta la próxima.

  1. El Shell Bash de GNU/Linux 1 – Introducción
  2. El Shell Bash de GNU/Linux 2 – Tuberías y filtros
  3. El Shell Bash de GNU/Linux 3 – Variables de entorno
  4. El Shell Bash de GNU/Linux 4 – Expresiones regulares
  5. El Shell Bash de GNU/Linux 5 – Sistema de ficheros
  6. El Shell Bash de GNU/Linux 5.1 – El árbol de directorios estándar
  7. El Shell Bash de GNU/Linux 5.2 – Tipos de ficheros
  8. El Shell Bash de GNU/Linux 5.3 – nombres, rutas absolutas y relativas
  9. El Shell Bash de GNU/Linux 5.4 – Permisos
  10. El Shell Bash de GNU/Linux 5.5 – Listar ficheros
  11. El Shell Bash de GNU/Linux 5.6 – Comandos para trabajas con archivos y carpetas
  12. El Shell Bash de GNU/Linux 5.7 – Otros comandos útiles
  13. El Shell Bash de GNU/Linux 5.8 – Montaje de sistemas de ficheros

17 comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.