13 octubre, 2024

Pues como me ha costado entender las expresiones regulares necesito ejemplos prácticos en el shell de Linux.

Como dice Wikipedia una expresión regular describe un conjunto de cadenas de caracteres sin enumerar sus elementos, esto no dice mucho o dice todo, pero como no le entiendo va mi propio tutorial practico.

en el shell de linux creo estos archivos para pruebas

$ touch RichardSite.txt
$ touch richardsite.txt
$ touch Richardsite.txt
$ touch richardSite.txt
$ touch Richard-Site.txt
$ touch data
$ touch datax1
$ touch datax2
$ touch otro

$ ls
data
datax1
datax2
otro
richardsite.txt
richardSite.txt
Richardsite.txt
Richard-Site.txt
RichardSite.txt

$ls [Rr]ichardsite.txt
richardsite.txt Richardsite.txt

$ls [Rr]ichard[Ss]ite.txt
richardsite.txt richardSite.txt Richardsite.txt RichardSite.txt

$ls *-*
Richard-Site.txt

$ls ?ichard?ite.txt
richardsite.txt richardSite.txt Richardsite.txt RichardSite.txt

$ ls data*
data datax1 datax2

Ok, hasta aquí todo va bien, pero cuando intento usar el circunflejo para que me liste lo mismo que lista $ ls data* , es decir, todo lo que comienza con data.

Caret circumflex ^


$ ls ^data
ls: no se puede acceder a ^data: No existe el fichero o el directorio[a^]*

Para lograr lo que se intento hacer con $ ls ^data se tendría que hacer así:


$ ls | grep -E '^data'
data
datax1
datax2

y para obtener lo opuesto es

$ ls | grep -vE '^data'
otro
richardsite.txt
richardSite.txt
Richardsite.txt
Richard-Site.txt
RichardSite.txt

http://linux.die.net/man/7/glob

Otro lugar de información útil es
http://www.proyecto-f.net/2009/12/10-expresiones-regulares-para-php/
donde dan 10 expresiones regulares para PHP

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *