Re: Una de expresiones regulares

2016-11-22 Por tema sio2
El lun, 21 de nov de 2016, a las 06:13:07 -0400, Juan Lavieri dijo:

> Hola.
> 
> 
> A ver si entiendo
> 
> uno dos
> 4cuatro letras es lo que necesito
> abcd 1234 caja tapa
> c4ja tapa esta noes
> caja tapa esta vale
> 
> Solo debería mostrar la última línea ¿Entendí bien?

Lo que deben ser cuatro son las palabras, no la cantidad de letras de
cada palabra. El que pueda haber números o no, es lo de menos, porque si
se usa \w en vez de [[:alpha:]] también falla.

-- 
   Como todo al fin se sabe
yo he sabido la verdad.
  --- Muñoz Seca ---



Re: Una de expresiones regulares

2016-11-22 Por tema sio2
El lun, 21 de nov de 2016, a las 01:58:38 -0500, Carlos Zuniga dijo:

> Esto me funciona:
> 
> $ cat foo
> dos tres cuatro
> uno dos tres cuatro
> uno dos tres cuatro cinco
> 
> $ grep -E '^(\w+\s+){3}\w+$' foo
> uno dos tres cuatro
> 

Gracias, pero no busco una solución, sino saber por qué la solución dada
no es (aparentemente) solución. Una alteranativa más aprecida a la
solución que das es esta (salvando el hecho de que como aparezcan comas
no vale):

$ grep -E '^(\b\w+\b\s*){4}$'<<<"a bc df"
a bc df

¿Por qué no desecha esa línea si no hay cuatro palabras?

-- 
   Harto sabe, si me sabe bien.
  --- Francisco de Quevedo ---



Re: Una de expresiones regulares

2016-11-21 Por tema Juan Lavieri

Hola.


A ver si entiendo


El 21-11-2016 a las 12:56 p.m., José Miguel (sio2) escribió:

Un saludo:

A ver si alguno sabe cuál es la causa de que falle lo siguiente:

Se pretende crear una regex de tipo ERE que concuerde con ilas líneas que
contengan cuatro palabras constitutidas por letras. Mi solución es esta:

^\W*(?[[:alpha:]]+\b\W*){4}$

Pero resulta que no me funciona bien:


si tengo por ejemplo.

uno dos
4cuatro letras es lo que necesito
abcd 1234 caja tapa
c4ja tapa esta noes
caja tapa esta vale

Solo debería mostrar la última línea ¿Entendí bien?



$ grep -E '^\W*(?[[:alpha:]]+\b\W*){4}$'<<<"aff b cx"
aff b cx

Sin embargo, la expresión PCRE correspondiente sí funciona bien:

$ grep -P '^\W*(?:[[:alpha:]]+\b\W*){4}$'<<<"aff b cx"

y no devuelve salida. Por más que miro y remiro la expresión regular, me
parece que está bien. ¿A alguien se le ocurre algo, o es error que debo
achacar a grep?



Saludos.

--
Juan M Lavieri

Errar es de humanos, pero es mas humano culpar a los demás.



Re: Una de expresiones regulares

2016-11-21 Por tema Carlos Zuniga
2016-11-21 11:56 GMT-05:00 José Miguel (sio2)
:
> Un saludo:
>
> A ver si alguno sabe cuál es la causa de que falle lo siguiente:
>
> Se pretende crear una regex de tipo ERE que concuerde con ilas líneas que
> contengan cuatro palabras constitutidas por letras. Mi solución es esta:
>
> ^\W*(?[[:alpha:]]+\b\W*){4}$
>
> Pero resulta que no me funciona bien:
>
> $ grep -E '^\W*(?[[:alpha:]]+\b\W*){4}$'<<<"aff b cx"
> aff b cx
>
> Sin embargo, la expresión PCRE correspondiente sí funciona bien:
>
> $ grep -P '^\W*(?:[[:alpha:]]+\b\W*){4}$'<<<"aff b cx"
>
> y no devuelve salida. Por más que miro y remiro la expresión regular, me
> parece que está bien. ¿A alguien se le ocurre algo, o es error que debo
> achacar a grep?
>


Esto me funciona:

$ cat foo
dos tres cuatro
uno dos tres cuatro
uno dos tres cuatro cinco

$ grep -E '^(\w+\s+){3}\w+$' foo
uno dos tres cuatro

O más simple si no te importa si hay espacios al final: ^(\w+\s*){4}$



Una de expresiones regulares

2016-11-21 Por tema sio2
Un saludo:

A ver si alguno sabe cuál es la causa de que falle lo siguiente:

Se pretende crear una regex de tipo ERE que concuerde con ilas líneas que
contengan cuatro palabras constitutidas por letras. Mi solución es esta:

^\W*(?[[:alpha:]]+\b\W*){4}$

Pero resulta que no me funciona bien:

$ grep -E '^\W*(?[[:alpha:]]+\b\W*){4}$'<<<"aff b cx"
aff b cx

Sin embargo, la expresión PCRE correspondiente sí funciona bien:

$ grep -P '^\W*(?:[[:alpha:]]+\b\W*){4}$'<<<"aff b cx"

y no devuelve salida. Por más que miro y remiro la expresión regular, me
parece que está bien. ¿A alguien se le ocurre algo, o es error que debo
achacar a grep?

-- 
   Patrimonio es un conjunto de bienes, matrimonio es un
conjunto de males.
  --- Enrique Jardiel Poncela --



una de expresiones regulares

2014-04-11 Por tema Mariano Cediel
echo create_dscomer9__agifa090.sql | grep  -e 'dsc*agi'
esto NO funciona, no devuelve NADA.

¿cómo se pone para poder machear la linea que contenga dsc y
ademas que contenga agi, haya lo que haya en medio?

Un saludo y gracias

-- 

[o - -  -   --  -
   (\   |  u d t
   (  \_('  c c s
   (__(=_) s o ?
  -=


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/cab-01r7vvgjqksyozwaxn_4cof7m-i9yhaf7obac2tbugrw...@mail.gmail.com



Re: una de expresiones regulares

2014-04-11 Por tema Ricardo Eureka!
$ echo create_dscomer9__agifa090.sql | egrep dsc|agi
create_dscomer9__agifa090.sql



2014-04-11 8:23 GMT-03:00 Mariano Cediel mariano.ced...@gmail.com:

 echo create_dscomer9__agifa090.sql | grep  -e 'dsc*agi'
 esto NO funciona, no devuelve NADA.

 ¿cómo se pone para poder machear la linea que contenga dsc y
 ademas que contenga agi, haya lo que haya en medio?

 Un saludo y gracias

 --

 [o - -  -   --  -
(\   |  u d t
(  \_('  c c s
(__(=_) s o ?
   -=


 --
 To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
 with a subject of unsubscribe. Trouble? Contact
 listmas...@lists.debian.org
 Archive:
 https://lists.debian.org/cab-01r7vvgjqksyozwaxn_4cof7m-i9yhaf7obac2tbugrw...@mail.gmail.com




Re: una de expresiones regulares

2014-04-11 Por tema Sergio Sanchez

El 11/04/14 08:23, Mariano Cediel escribió:

echo create_dscomer9__agifa090.sql | grep  -e 'dsc*agi'
esto NO funciona, no devuelve NADA.

¿cómo se pone para poder machear la linea que contenga dsc y
ademas que contenga agi, haya lo que haya en medio?

Un saludo y gracias



echo create_dscomer9__agifa090.sql | grep  dsc | grep agi


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/5347d45e.4090...@arnet.com.ar



Re: una de expresiones regulares

2014-04-11 Por tema Santiago Vila
On Fri, 11 Apr 2014, Mariano Cediel wrote:

 echo create_dscomer9__agifa090.sql | grep  -e 'dsc*agi'
 esto NO funciona, no devuelve NADA.
 
 ¿cómo se pone para poder machear la linea que contenga dsc y
 ademas que contenga agi, haya lo que haya en medio?

grep dsc.*agi


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/alpine.deb.2.02.1404111327030.14...@kolmogorov.unex.es



Re: una de expresiones regulares

2014-04-11 Por tema Santiago Vila
On Fri, 11 Apr 2014, Ricardo Eureka! wrote:

 $ echo create_dscomer9__agifa090.sql | egrep dsc|agi
 create_dscomer9__agifa090.sql

No. Eso es OR, él dice AND y además el dsc primero.


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/alpine.deb.2.02.1404111336440.14...@kolmogorov.unex.es



Re: una de expresiones regulares

2014-04-11 Por tema Santiago Vila
On Fri, 11 Apr 2014, Sergio Sanchez wrote:

 echo create_dscomer9__agifa090.sql | grep  dsc | grep agi

Eso tampoco. Él decía (si he entendido bien) dsc y *luego* agi, con
cualquier cosa enmedio.

(Estoy empezando a pensar que la gente responde sin entender la pregunta)


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/alpine.deb.2.02.1404111448020.16...@kolmogorov.unex.es



Re: una de expresiones regulares

2014-04-11 Por tema Camaleón
El Fri, 11 Apr 2014 13:23:34 +0200, Mariano Cediel escribió:

 echo create_dscomer9__agifa090.sql | grep  -e 'dsc*agi'
 esto NO funciona, no devuelve NADA.
 
 ¿cómo se pone para poder machear la linea que contenga dsc y ademas
 que contenga agi, haya lo que haya en medio?

Sacado de mis chuletas:

root@stt008:~#  echo create_dscomer9__agifa090.sql | grep -E 'dsc.*agi'
create_dscomer9__agifa090.sql

Saludos,

-- 
Camaleón


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/pan.2014.04.11.13.55...@gmail.com



Re: una de expresiones regulares

2014-04-11 Por tema Francesc Guitart

El 11/04/2014 13:23, Mariano Cediel escribió:

echo create_dscomer9__agifa090.sql | grep  -e 'dsc*agi'
esto NO funciona, no devuelve NADA.

¿cómo se pone para poder machear la linea que contenga dsc y
ademas que contenga agi, haya lo que haya en medio?

Un saludo y gracias



El asterisco es cero o más repeticiones del carácter precedente, en este 
caso c.


Un punto . es cualquier carácter. Entonces dsc más cualquier 
carácter repetidos cero o más veces más agi:



--
Francesc Guitart


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/5347f6f4.4070...@gmx.com



Re: una de expresiones regulares

2014-04-11 Por tema Edward Villarroel (EDD)
grep -e agi -e dsc
que contengan agi o dsc

Edward Villarroel:  @Agentedd



El día 11 de abril de 2014, 10:15, Edward Villarroel (EDD)
edward.villarr...@gmail.com escribió:
 y si quiero solo numero?
 Edward Villarroel:  @Agentedd



 El día 11 de abril de 2014, 9:36, Francesc Guitart fguit...@gmx.com 
 escribió:
 El 11/04/2014 13:23, Mariano Cediel escribió:

 echo create_dscomer9__agifa090.sql | grep  -e 'dsc*agi'
 esto NO funciona, no devuelve NADA.

 ¿cómo se pone para poder machear la linea que contenga dsc y
 ademas que contenga agi, haya lo que haya en medio?

 Un saludo y gracias


 El asterisco es cero o más repeticiones del carácter precedente, en este
 caso c.

 Un punto . es cualquier carácter. Entonces dsc más cualquier carácter
 repetidos cero o más veces más agi:


 --
 Francesc Guitart



 --
 To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
 with a subject of unsubscribe. Trouble? Contact
 listmas...@lists.debian.org
 Archive: https://lists.debian.org/5347f6f4.4070...@gmx.com



--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/cadfsjo2b79r+cer08dphf6xmg1+pgn5f3f27swsjdpmc2+c...@mail.gmail.com



Re: una de expresiones regulares

2014-04-11 Por tema Edward Villarroel (EDD)
y si quiero solo numero?
Edward Villarroel:  @Agentedd



El día 11 de abril de 2014, 9:36, Francesc Guitart fguit...@gmx.com escribió:
 El 11/04/2014 13:23, Mariano Cediel escribió:

 echo create_dscomer9__agifa090.sql | grep  -e 'dsc*agi'
 esto NO funciona, no devuelve NADA.

 ¿cómo se pone para poder machear la linea que contenga dsc y
 ademas que contenga agi, haya lo que haya en medio?

 Un saludo y gracias


 El asterisco es cero o más repeticiones del carácter precedente, en este
 caso c.

 Un punto . es cualquier carácter. Entonces dsc más cualquier carácter
 repetidos cero o más veces más agi:


 --
 Francesc Guitart



 --
 To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
 with a subject of unsubscribe. Trouble? Contact
 listmas...@lists.debian.org
 Archive: https://lists.debian.org/5347f6f4.4070...@gmx.com



--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/cadfsjo2yept6mqdfdvo75s+stxgc+omtgswk7tsewrau4e_...@mail.gmail.com



Re: una de expresiones regulares

2014-04-11 Por tema Eduardo A . Bustamante López
On Fri, Apr 11, 2014 at 01:23:34PM +0200, Mariano Cediel wrote:
 echo create_dscomer9__agifa090.sql | grep  -e 'dsc*agi'
 esto NO funciona, no devuelve NADA.
 
 ¿cómo se pone para poder machear la linea que contenga dsc y
 ademas que contenga agi, haya lo que haya en medio?
 
 Un saludo y gracias
Ya varios comentaron la respuesta correcta, que es usar la expresión
regular 'dsc.*agi', que significa 'dsg' seguido de cero o más
caracteres cualquiera, seguido de 'agi'. '.*' (el punto significa
cualquier caracter, el asterisco, que son cero o más ocurrencias).


Yo lo que quería aportar es que en ocasiones es muy pesado usar un
grep solo para verificar que un nombre de archivo sigue cierto
patrón, porque el shell ya tiene mecanismos para lograrlo. Si usas
bash:

  archivo=create_dscomer9__agifa090.sql
  if [[ $archivo = *dsc*agi* ]]; then
echo verificado
  else
echo 'no concuerda'
  fi

En este caso, bash (no dash) tiene el comando [[ ... ]], que te
permite usar globs en el lado derecho del igual. Un glob es como un
tipo de expresión regular, pero más simple (y menos poderoso).


También puedes usar case, que funciona también en dash:

  archivo=create_dscomer9__agifa090.sql
  case $archivo in
*dsc*agi*)
  echo verificado
  ;;
*)
  echo 'no concuerda'
  esac

-- 
Eduardo Bustamante


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20140411150238.ga17...@dualbus.me



Re: una de expresiones regulares

2014-04-11 Por tema Francesc Guitart

El 11/04/2014 16:46, Edward Villarroel (EDD) escribió:

grep -e agi -e dsc
que contengan agi o dsc



Entonces:

egrep 'agi\|dsc'

El | es OR y el \ es para escapar el carácter | y tenga dicho signifiado.




Edward Villarroel:  @Agentedd



El día 11 de abril de 2014, 10:15, Edward Villarroel (EDD)
edward.villarr...@gmail.com escribió:

y si quiero solo numero?
Edward Villarroel:  @Agentedd



El día 11 de abril de 2014, 9:36, Francesc Guitart fguit...@gmx.com escribió:

El 11/04/2014 13:23, Mariano Cediel escribió:


echo create_dscomer9__agifa090.sql | grep  -e 'dsc*agi'
esto NO funciona, no devuelve NADA.

¿cómo se pone para poder machear la linea que contenga dsc y
ademas que contenga agi, haya lo que haya en medio?

Un saludo y gracias



El asterisco es cero o más repeticiones del carácter precedente, en este
caso c.

Un punto . es cualquier carácter. Entonces dsc más cualquier carácter
repetidos cero o más veces más agi:


--
Francesc Guitart



--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact
listmas...@lists.debian.org
Archive: https://lists.debian.org/5347f6f4.4070...@gmx.com









--
Francesc Guitart


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/53480468.30...@gmx.com



Re: una de expresiones regulares

2014-04-11 Por tema Camaleón
El Fri, 11 Apr 2014 17:04:08 +0200, Francesc Guitart escribió:

 El 11/04/2014 16:46, Edward Villarroel (EDD) escribió:
 grep -e agi -e dsc
 que contengan agi o dsc

Correcto.

sm01@stt008:~$ echo create_dscomer9__agifa090.sql | grep -e agi -e dsc
create_dscomer9__agifa090.sql

 Entonces:
 
 egrep 'agi\|dsc'
  ^

Creo que sobra.

sm01@stt008:~$ echo create_dscomer9__agifa090.sql | egrep 'agi\|dsc'
sm01@stt008:~$ 

sm01@stt008:~$ echo create_dscomer9__agifa090.sql | grep 'agi\|dsc'
create_dscomer9__agifa090.sql

 El | es OR y el \ es para escapar el carácter | y tenga dicho
 signifiado.

Correcto, pero sólo cuando no activas las expresiones regulares 
extendidas.

Saludos,

-- 
Camaleón


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/pan.2014.04.11.15.43...@gmail.com