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 :-)