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

Re: Problemas con formato numerico en GAWK



Carlos Onelio Cazorla Machado wrote:
El jue, 18-06-2009 a las 06:56 -0400, Carlos Onelio Cazorla Machado
escribió:
Hola colegas.

Recientemente decidí usar (por primera vez) gawk para procesar un
archivo texto con el reporte de consumo telefonico de cada cliente y
notificar el estado de sus cuentas telefonicas por correo electrónico
diariamente. El archivo tiene una estructura sencilla:

date co-line cliente number price 20090601 001 P0002 350031 13.85
.		xxx	P0150	xxxxxx	x.xx
.		xxx	P0002	xxxxxx	2.35
200906nn	xxx	xxxxx	xxxxx	x.xx

Sencillo, totalizar la columna price por cliente. Aqui viene lo bueno,
cada vez que efectuo la sumatoria (total+=$5) me redondea cada valor de
$5 (price) a entero. La documentación que tengo de awk dice que las
variables las inicializa a 0. Es decir, en la tabla de ejemplo me
totalizaría 15 para el cliente P0002 (13+2, truncando el valor).
Revisé que valor estaba tomando $5 y está tomando el valor real, sin
embargo pasa este problema. Probé inicializar total = 0.0 pero igual.

Estaré obviando alguna conversión? (Aunque dice las documentación que
awk trabaja sin problemas con valores numéricos) o habrá que indicarle
el tipo a la variable de alguna forma para float?

Saludos y gracias,

Carlos
--
=================================== MSc. Carlos O. Cazorla Machado Dpto. Informática y Comunicaciones
ECOT "Cayo Santa María"
e-mail: cazorla@ecot.co.cu
Teléfonos: 353644, 351084 (Ext.117)
Linux User 379000
===================================




Hola colegas.

Ayer en la tarde/noche tuvimos corte de energía eléctrica en la empresa
por reparaciones y hubo  que apagar los servidores por la ausencia de
climatización en el local, así que si alguno respondió a este hilo, por
favor reenvie el correo para poder recibirlo.

Disculpen molestias.

Saludos,

Poniendo los datos en un archivo datos-x, y agregando # al principio de la primera linea, para ignorarla, y con un simple: mawk ' /#/ !~ $0 { print "no #"; total += $5} END {print "total=" total}' datos-x
da esta salida:
total=16.2
Asi que si no das ejemplo de tu codigo, dudo que se te pueda ayudar.


Reply to: