[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: