Linux/Unix Shell Scripting - Reemplazo de texto complejo

 
Vista:
sin imagen de perfil
Val: 25
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Reemplazo de texto complejo

Publicado por epicteto (18 intervenciones) el 28/05/2014 09:38:01
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 €

En la previsualización que hago de este mensaje no me aparece el carácter del euro que es el que tengo que añadir, aparece en su lugar el de interrogación, pero a efectos de la consulta es indiferente

¿Alguien podría ayudarme?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Reemplazo de texto complejo

Publicado por Tom (361 intervenciones) el 28/05/2014 10:34:44
Es bastante fácil si miras la doc. de sed.

Algo así debería funcionar:
1
sed 's/(\([0-9.]*\) en venta)/(\1€ en venta)/'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 25
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Reemplazo de texto complejo

Publicado por epicteto (18 intervenciones) el 28/05/2014 12:30:34
Tom, no era capaz de conseguirlo. He rectificado ligeramente lo que me has enviado y ahora si funciona

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reemplazo de texto complejo

Publicado por Tom (361 intervenciones) el 28/05/2014 15:54:16
Si la sintaxis era incorrecta, puedes ponerlo aquí bien hecho, quizás valga para otra gente que consulte :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Reemplazo de texto complejo

Publicado por epicteto (18 intervenciones) el 28/05/2014 16:02:54
No, la sintaxis es correcta, simplemente era cuestión de adaptarlo a mi caso específico. Yo lo he dejado así:

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

Simplemente he puesto el carácter euro por delante del 1

Gracias de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar