Re: obtener string que hace match con cierta regex
Ivan Lopez <ilopez@cast-info.es> writes:
> > sed s/[^[:digit:]]//g
> >
> > Literalmente "sustituye por nada lo que no sea un dígito"
> >
> > Más info en man 7 regex
>
> gracias por la ayuda, era eso lo que buscaba
>
> aunque aun asi no me sirve... pero pq realmente tiene q ejecutarse
> en un solaris 2.6 cuyo sed no acepta lo del [:digit:]... debia
> haberlo dicho antes, sorry O:)
Prueba esto:
sed 's/[^0-9]//g'
por ejemplo:
skywalker:~$ echo "dsdsd.2332.dsdf.asad.dsae" | sed 's/[^0-9]//g'
2332
skywalker:~$ echo "hdsuhd.sdsd.3823.dsd.ds" | sed 's/[^0-9]//g'
3823
> al final he acabado utilizando esta linea d awk (el nawk d solaris
> 2.6)
>
> nawk '{ if (match($0,/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/)) { print substr($0,RSTART,RLENGTH) }'
>
> (si alguien sabe como acortar la tira d [0-9] estaria bien, aqui
>algo del estilo {12} o \{12\} no me ha funcionado)
Prueba con esto otro, a ver si vale:
awk '{ if (match($0,/[0-9]+/)) { print substr($0,RSTART,RLENGTH)} }'
El `+' significa que encuentre 1 o más ocurrencias del átomo que le
precede (en este caso [0-9]).
Más información en `info [mng]*awk' ;-)
Como dijo alguien hace tiempo por aquí, "¡¿cómo he podido vivir todo
este tiempo sin expresiones regulares?!"
Hasta luego.
--
------------------------------------------------------------
David Muriel.
Debian GNU/Linux woody + Emacs 20.7.2 + Gnus v5.8.3
Linux registered user #25632 (http://counter.li.org/)
------------------------------------------------------------
"Linux is userfriendly,
but is only a bit selective about its friends :-)"
Reply to: