Re: Una de expresiones regulares
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
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
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 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
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 --
Re: una de expresiones regulares
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
Re: una de expresiones regulares
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) escribió: y si quiero solo numero? Edward Villarroel: @Agentedd El día 11 de abril de 2014, 9:36, Francesc Guitart 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 y ademas que contenga , 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
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 y > ademas que contenga , 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
y si quiero solo numero? Edward Villarroel: @Agentedd El día 11 de abril de 2014, 9:36, Francesc Guitart 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 y >> ademas que contenga , 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
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) escribió: > y si quiero solo numero? > Edward Villarroel: @Agentedd > > > > El día 11 de abril de 2014, 9:36, Francesc Guitart > 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 y >>> ademas que contenga , 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
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 y ademas que contenga , 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
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 y ademas > que contenga , 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
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
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
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 y > ademas que contenga , 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
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 y ademas que contenga , 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
$ echo "create_dscomer9__agifa090.sql" | egrep "dsc|agi" create_dscomer9__agifa090.sql 2014-04-11 8:23 GMT-03:00 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 y > ademas que contenga , 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 > >
una de expresiones regulares
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 y ademas que contenga , 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