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