1- Introduccion
2- Regular expression position anchors
3- Regular expression character sets
4- Regular expression Quantity modifiers
5- Usando Sed
6- Usando Sed – Substitution flags
7- Usando Grep
Introduccion
Aca vamos a poder ver algunos ejemplos de este topico.
En las expresiones regulares vamos a utilizar string de texto o patrones por lo cuales estos ultimos vamos a usar dos tipos de carateres ( texto plano o metacaracteres).
Vamos a ver como manejar todo esto con ejemplos.
\ es un caracter de escape lo que venga despues de el no se intepreta.
Regular expression position anchor
Regular expression position anchors
^ , $ , \<\>
Ahi tenemos esos tres casos.
Antes vamos a crear un archivo:
[root@localhost ~]# cat test Villa Dalmine Restaurador de Leyes JMR Argentina [root@localhost ~]#
Anchors are used to describe position information. Table 6-8, shown earlier, lists anchor
characters.
Ejemplo:
[root@localhost ~]# grep '^Villa' test Villa Dalmine [root@localhost ~]#
Como vemos este ^ signo me sirve para poder filtrar aquellos renglones que comienzan con una letra o palabra en especial o patro…
Ahora vamos a ver un ejemplo con $
[root@localhost ~]# grep 'Dalmine$' test Villa Dalmine [root@localhost ~]#
Aca vimos que con el signo $ vamos a poder un patro que indique un final de un renglon.
Ejemplo:
Ahora vamos a usar en conjuncion ^$:
[root@localhost ~]# grep '^$' test [root@localhost ~]# [root@localhost ~]# grep -c '^$' test 1 [root@localhost ~]#
En este ejemplo lo que paso fue que le dijimos que busque aquellos renglos que son nulos que en el texto tengo un enter.
Ejemplo:
[root@localhost ~]# grep '^Argentina$' test Argentina [root@localhost ~]#
Aca en este ejemplo lo que hicimos fue buscar si algun renglon contiene unicamente esa palabra.
Ahora el ultimo ejemplo para este grupo.
[root@localhost ~]# grep '\<[aA]rgentina\>' test Argentina argentina [root@localhost ~]# [root@localhost ~]# grep '\<[:alpha:]rgentina\>' test argentina [root@localhost ~]#
Aca como vemos esta opcion < > en conjunto con [] voy a buscar alguna palabra que sea Argentina o Argentina.
Regular expression POSIX character classes
Character class Description
[:alnum:] Alphanumeric [a-zA-Z0-9]
[:alpha:] Alphabetic [a-zA-Z]
[:blank:] Spaces or Tabs
[:cntrl:] Control characters
[:digit:] Numeric digits [0-9]
[:graph:] Any visible characters
[:lower:] Lowercase [a-z]
[:print:] Noncontrol characters
[:punct:] Punctuation characters
[:space:] Whitespace
[:upper:] Uppercase [A-Z]
[:xdigit:] Hex digits [0-9a-fA-F]
Otro Grupo:
Regular expression character sets
Regular expression character sets
[abc][a-z]
[^abc][^a-z]
.
Ejemplos:
Los caracteres pueden ser situados en grupos y rangos para realizar expresiones regulares mas efecientes.
Ver este archivo:
[root@localhost ~]# cat test
Villa Dalmine
Restaurador de Leyes de Argentina
JMR
Argentina
argentina
124Argentina
12JMR
12345JMR
[root@localhost ~]#
Ejemplo:
[root@localhost ~]# grep '[Aa]rgentina' test Restaurador de Leyes de Argentina Argentina argentina 124Argentina [root@localhost ~]#
Aca como vimos nos devolvio todas las palabras que son contenidas cumpliendo con Argentina o Argentina o 123Argentina y asi..
Otro:
[root@localhost ~]# grep ‘[0-9][0-9][0-9]‘ test
124Argentina
12345JMR
[root@localhost
Aca estamos buscando aquellos parametros que empiezan por lo menos con tres numeros.
Otro:
[root@localhost ~]# grep ‘^[^0-9]‘ test
Villa Dalmine
Restaurador de Leyes de Argentina
JMR
Argentina
argentina
[root@localhost ~]#
Aca nos va a devolver aquellos parametros que que empiezan con cualquiera cosa que no sea un numero.
Regular expression Quantity modifiers
BRE:
*,\?,\+,\{n,m},\|,\(regex\)
ERE
*,?,+,{n,m},|,\regex)
Vamos a ver algunos ejemplos en donde mezclaremos el uso de character set con la cantidad de veces que necesitemos utilizar esa busqueda.
[rino@oc7287280510 ~]$ cat file1 ab abc abcc abccc asaabsde ffda4 [rino@oc7287280510 ~]$ [rino@oc7287280510 ~]$ grep abc* file1 ab abc abcc abccc asaabsde [rino@oc7287280510 ~]$
Como ven nos trajo todo lo que contiene ab,abc,abcc y asi..
[rino@oc7287280510 ~]$ grep abcc* file1 abc abcc abccc [rino@oc7287280510 ~]$
Aca nos trajo todo lo que contiene abc,abcc,abccc y asi ..
Otro ejemplo:
[rino@oc7287280510 ~]$ cat file1
123456
abc12asf1245
a1gb1sd2
12456
[rino@oc7287280510 ~]$
[rino@oc7287280510 ~]$ grep ‘[0-9][0-9][0-9]*’ file1
123456
abc12asf1245
12456
[rino@oc7287280510 ~]$
Todo lo que contenga al menos dos numeros.
Tambien asi es lo mismo.
[rino@oc7287280510 ~]$ grep '[0-9]\{2,\}' file1
123456
abc12asf1245
12456
[rino@oc7287280510 ~]$
el \{2,\} lo que hace es repetir dos veces lo que dice antes.
Otro Ejemplo:
[rino@oc7287280510 ~]$ cat file1 file1 file2 fil1 [rino@oc7287280510 ~]$ [rino@oc7287280510 ~]$ grep 'file[12]\?' file1 file1 file2 [rino@oc7287280510 ~]$
Aca como ven me devuelve file1 y file2 porque con ? puede encontrar cero ocurriencias.
Otro Ejemplo:
[rino@oc7287280510 ~]$ cat file1 Hola1 Como estas es $1 [rino@oc7287280510 ~]$ [rino@oc7287280510 ~]$ grep '[0-9]\+' file1 Hola1 es $1 [rino@oc7287280510 ~]$
Todas aquellas lineas que contienen el numero 1.
Otro Ejemplo:
[rino@oc7287280510 ~]$ cat file1
1
11
111
1111
11111
1010110
[rino@oc7287280510 ~]$
[rino@oc7287280510 ~]$ grep '^1\{3,5\}$' file1
111
1111
11111
[rino@oc7287280510 ~]$
Todas aquellas lineas que empiezan con 1 y el rango es de 111 a 11111.
Otro Ejemplo:
[rino@oc7287280510 ~]$ cat file1
12
1
1234
12345
124
[rino@oc7287280510 ~]$
[rino@oc7287280510 ~]$ grep '\<[0-9]\{2,5\}\>' file1
12
1234
12345
124
[rino@oc7287280510 ~]$
Al menos contienen desde dos digitos hasta cinco.
Otro ejemplo:
[rino@oc7287280510 ~]$ cat file1 El Mundo Linux y sus consecuencias. El mundo linux y Sus Consecuencias. EL MUNDO LINUX Y SUS CONSECUENCIAS. [rino@oc7287280510 ~]$ [rino@oc7287280510 ~]$ grep -E '[Ll]inux|[sS]us' file1 El Mundo Linux y sus consecuencias. El mundo linux y Sus Consecuencias. [rino@oc7287280510 ~]$
Aca estamos usando la version extendida del grep.
Usando Sed
Tenemos este archivo.
Toda la gente de Argentina es de Dalmine y Deportivo Merlo. Toda la gente de Argentina es de Dalmine y Deportivo Merlo. Toda la gente de Argentina es de Dalmine y Deportivo Merlo. Toda la gente de Argentina es de Dalmine y Deportivo Merlo.
Patron para el sed.
s/pattern/replacement/flags
Usando Sed - Substitution flags
Cuatro flags para sustitucion:
A --> un numero que me indica en donde va a buscar la ocurrencia y cambiarla.
g --> Indica que todas las ocurrencias deben ser cambiadas del texto
p --> Indica que el contenido original de la linea debe ser mostrada.
w file --> Escribe el resultado de la substitucion en un archivo.
Aca le vamos a decir que solo lo cambie en la segunda linea.
[rino@oc7287280510 scripts]$ sed '2 s/Dalmine/River/' sed Toda la gente de Argentina es de Dalmine y Deportivo Merlo. Toda la gente de Argentina es de River y Deportivo Merlo. Toda la gente de Argentina es de Dalmine y Deportivo Merlo. Toda la gente de Argentina es de Dalmine y Deportivo Merlo. [rino@oc7287280510 scripts]$
Aca vamos a mostrar como cambiarlo de forma global
[rino@oc7287280510 scripts]$ sed 's/Dalmine/River/g' sed Toda la gente de Argentina es de River y Deportivo Merlo. Toda la gente de Argentina es de River y Deportivo Merlo. Toda la gente de Argentina es de River y Deportivo Merlo. Toda la gente de Argentina es de River y Deportivo Merlo. [rino@oc7287280510 scripts]$
Le agregamos hola al final del archivo.
[rino@oc7287280510 scripts]$ echo "hola" >> sed
[rino@oc7287280510 scripts]$ sed -n 's/Hola/Chau/p' sed Chau [rino@oc7287280510 scripts]$
Ahora vamos a guardar la salida de lo que cambia en un archivo nuevo.
[rino@oc7287280510 scripts]$ sed 's/Hola/Chau/w sed2' sed Toda la gente de Argentina es de Dalmine y Deportivo Merlo. Toda la gente de Argentina es de Dalmine y Deportivo Merlo. Toda la gente de Argentina es de Dalmine y Deportivo Merlo. Toda la gente de Argentina es de Dalmine y Deportivo Merlo. Chau [rino@oc7287280510 scripts]$ cat sed2 Chau [rino@oc7287280510 scripts]$
Para ver mas en profunidad --> Usando Sed
Usando Grep
Ver el siguinte Link --> Usando Grep
Referencia --> LInks:
[1] http://www.gentoo.org/doc/es/articles/l-sed2.xml
[2] http://enavas.blogspot.com/2008/03/el-shell-de-linux-comando-sed.html

The Preparando LPIC-1 103.7 Buscar en archivos de texto usando expresiones regulares by ITRestauracion, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.