Unix - el printf

 
Vista:

el printf

Publicado por Ivan (1 intervención) el 19/11/2007 18:09:46
Hola como estan

primero que todo no soy muy experto en UNIX, pero les voy a describir mi problema

tengo este fichero de entrada

1248716|SEGUROS BANCENTRO, C.A. |J002981288 |C158435 |20070901|11412000000001|IG103| 0000001| 0000000000000| 0000000000000| 0000000000000| 0000000000000|-0000000487600|20070800015476|20070817|F08085823

cuando genero mi fichero de salida .dat la ultima columna no se imprime solo imprime 000000000 en vez de F08085823

esta es la salida del fichero
INFORME_PC|20070901|IFUX1401|IG103|20070901|SEGUROS BANCENTRO. C.A. J002981288 C158435 11412000000001|0000001 0000000000000 0000000000000 0000000000000 0000000000000-0000000487600 20070800015476 20070817 000000000

y este es el codigo

ENT=./IFSE1400
SAL=./IFSE1401.dat

sed 's/,/./g' <${ENT} | awk 'BEGIN { FS="|" }

{
FACTURA[$2$3$4$5$6$7]+=$8;
IMP_CONC[$2$3$4$5$6$7]+=$9;
IMP_CON_IVA[$2$3$4$5$6$7]+=$10;
IMP_IVA[$2$3$4$5$6$7]+=$11;
IMP_EXEN[$2$3$4$5$6$7]+=$12;
IMP_RET[$2$3$4$5$6$7]+=$13;
COMPROBANTE[$2$3$4$5$6$7]+=$14;
FECHA_ORIGN[$2$3$4$5$6$7]+=$15;
FACT_ORIGIN[$2$3$4$5$6$7]+=$16;
}
END {
for (var in FACTURA) {
printf("INFORME_PC|%s|IFUX1401|%s|%s|%s%s%s%s|",substr(var,82,8),substr(var,104,5),substr(var,82,8),substr(var,1,50),substr(var,51,15),substr(var,64,17),substr(var,90,14),substr(var,180,15), substr(var,194,14), substr(var,209,8),substr(var,218,9));
printf("%7.7d% 014.0lf% 014.0lf% 014.0lf% 014.0lf% 014.0lf% 14.14d% 8.8d%, 9.9d\n", FACTURA[var],IMP_CONC[var],IMP_CON_IVA[var],IMP_IVA[var],IMP_EXEN[var],IMP_RET[var],COMPROBANTE[var],FECHA_ORIGN[var],FACT_ORIGIN[var])
}
}' > ${SAL}

if [ $? -ne 0 ]; then
echo "TERMINOMAL. $0 - SUMACION"
exit 1
fi
echo "TERMINOBIEN"

Podrian decirme que esta mal y cual deberia ser lo correcto
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

RE:el printf

Publicado por Tom (178 intervenciones) el 20/11/2007 08:42:47
Tu problema podría ser que Comprobante no es un valor decimal, sino un string. Cámbialo en el printf del awk.
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