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.
- El Shell Bash de GNU/Linux 1 – Introducción
- El Shell Bash de GNU/Linux 2 – Tuberías y filtros
- El Shell Bash de GNU/Linux 3 – Variables de entorno
- El Shell Bash de GNU/Linux 4 – Expresiones regulares
- El Shell Bash de GNU/Linux 5 – Sistema de ficheros
- El Shell Bash de GNU/Linux 5.1 – El árbol de directorios estándar
- El Shell Bash de GNU/Linux 5.2 – Tipos de ficheros
- El Shell Bash de GNU/Linux 5.3 – nombres, rutas absolutas y relativas
- El Shell Bash de GNU/Linux 5.4 – Permisos
- El Shell Bash de GNU/Linux 5.5 – Listar ficheros
- El Shell Bash de GNU/Linux 5.6 – Comandos para trabajas con archivos y carpetas
- El Shell Bash de GNU/Linux 5.7 – Otros comandos útiles
- 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.
- El Shell Bash de GNU/Linux 1 – Introducción
- El Shell Bash de GNU/Linux 2 – Tuberías y filtros
- El Shell Bash de GNU/Linux 3 – Variables de entorno
- El Shell Bash de GNU/Linux 4 – Expresiones regulares
- El Shell Bash de GNU/Linux 5 – Sistema de ficheros
- El Shell Bash de GNU/Linux 5.1 – El árbol de directorios estándar
- El Shell Bash de GNU/Linux 5.2 – Tipos de ficheros
- El Shell Bash de GNU/Linux 5.3 – nombres, rutas absolutas y relativas
- El Shell Bash de GNU/Linux 5.4 – Permisos
- El Shell Bash de GNU/Linux 5.5 – Listar ficheros
- El Shell Bash de GNU/Linux 5.6 – Comandos para trabajas con archivos y carpetas
- El Shell Bash de GNU/Linux 5.7 – Otros comandos útiles
- El Shell Bash de GNU/Linux 5.8 – Montaje de sistemas de ficheros
Pingback: El Shell Bash de GNU/Linux 3 – Variables de entorno | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 5.3 – nombres, rutas absolutas y relativas | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 1 | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux | jblanco.org
Pingback: El Shell Bash de GNU/Linux | interlevante.es
Pingback: El Shell Bash de GNU/Linux 5.7 – Otros comandos útiles | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 5.6 – Comandos para trabajar con archivos y carpetas | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 5.2 – Tipos de ficheros | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 5 – Sistema de ficheros | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 2 – Tuberías y filtros | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 5.1 – El árbol de directorios estándar | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 5.4 – Permisos | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 5.5 – Listar ficheros | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux – interlevante.com
Pingback: El Shell Bash de GNU/Linux 5.8 – Montaje de sistemas de ficheros – SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux – Jose Blanco Vega
Pingback: Compilar el SDK para el ESP8266 | El blog de Julián :-)!