Linux en Espanol
 
Reemplazo de texto complejo con sed (tema #25009)
Publicar nuevo tema  Responder al tema    Foros de discusión -> Programación
Autor Mensaje
epicteto
Forista
Registrado: 2014-02-23
Mensajes: 29

Publicado: 2014-05-28 07:48:54    Asunto: Reemplazo de texto complejo con sed

Hola

Tengo varios archivos (muchos...) en los que tengo que hacer una serie de sustituciones en su texto. Suelo hacerlo con sed y me va bastante bien, pero hay una operaci?n en concreto que no se como hacerla. Se trata de lo siguiente, en:

1971pd (2.71 en venta)

tengo que sustituirlo de tal modo que quede as?

1971pd (?2.71 en venta)

o sea, se trata de a?adir el ? a todas las expresiones (numero 'en venta') entre el car?cter abrir par?ntesis y la cifra.

El problema es que hay otros par?ntesis, que no van seguidos de caracteres num?ricos, donde no hay que a?adirlo y la primera cadena tampoco se puede tomar como referencia porque cambia y tiene distintos n?meros de caracteres.

Resumiendo, se trata de que sed, u otro programa, haga:

- Encontrar la expresion "(cadena num?rica 'en venta')"
- A?adir entre el car?cter abrir par?ntesis y la cadena num?rica el car?cter ? para que quede "(?cadena num?rica 'en venta')"


?Alguien podr?a ayudarme?

Gracias
epicteto
Forista
Registrado: 2014-02-23
Mensajes: 29

Publicado: 2014-05-28 14:13:12    Asunto:

Bueno, lo consegui. Me respondo por si le vale a alguien

sed 's/(\([0-9.]*\) en venta)/(\1? en venta)/'





La marca registrada Linux (R) se usa siguiendo la sublicensia obtenida del "Linux Mark Institute",
el LICENCIATARIO exclusivo de Linus Torvalds, propietario de la marca en EEUU y otros países
The registered trademark Linux (R) is used pursuant to a sublicense from the Linux Mark Institute,
the exclusive LICENSEE of Linus Torvalds, owner of the mark in the U.S. and other countries