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

Re: ¿Se puede hacer en vi?



Daniel Costas:
> Tengo un fichero con lineas que contienen datos en pesetas y
> necesito convertirlos a euros. Para ellos habia pensado en usar vi
> para hacer una busqueda y sustitucion pero no encuentro la forma de
> que me haga la operacion matematica.
>
> la cadena que uso de sustitucion es:
> s/\"\([0-9]*\)\"/\"\1/166.386\"/g;
>                        ^_______^
>
> El problema es que lo mete como texto literal al hacer la sustitucion. ¿A
> alguien se le ocurre como se podria hacer para que hiciese la operacion
> matematica de dividir?
>
> Habia pensado en hacerlo con un programilla en perl, pero el problema es que
> hay que ir seleccionando las lineas ya que no interesa la conversion de todo
> el texto, solo la de algunas lineas (bastantes, por cierto)

No seas chapucero, debes seguir las reglas de redondeo oficiales
(no, no creo que el vi sepa hacer redondeos), o cualquier otro método
que dé el mismo resultado.

Si hubiera solamente un precio por línea, yo lo haría así:

#!/usr/bin/awk -f
{
 if (l=match($0,"\"[0-9]*\"")) {
  cantidad=substr($0,l+1,RLENGTH-2)
  print substr($0,1,l) int(cantidad/166.386*100+0.5)/100 substr($0,l-1+RLENGTH)
 }
 else {
  print $0
 }
}

Atención: Este programa te lo doy con la esperanza de que te sea útil
pero sin NINGUNA garantía :-)



Reply to: