El 24 de septiembre de 2010 06:15, José Jesús <[email protected]> escribió:
El jue, 23-09-2010 a las 11:22 -0500, Manuel Andres Ramirez escribió:
> El 22/09/2010 03:19 p.m., kike jordi escribió:
> > El 22 de septiembre de 2010 15:17, Eduardo Moreno<[email protected]>
> > escribió:
> >
> > El 22/09/10 08:39, kikejordi escribió:
> >
> >
> >
> > Hola, tengo una vieja base de datos hecha con qbasic,
> > las tablas son de longitud fija, abriendo el archivo
con
> > writer se ve una sola fila (no tiene separador de
> > registros), hay alguna forma de importarlo con calc
> > pasandole
> > como parametros la longitud del registro, y la de los
> > campos? una vez separados los registros no es dificil
> > separar los campos de longitud fija, mi problema es con
> > los separadores de registro, no encuentro nada que me
> > los separe.
> >
> > gracias
> >
> >
> >
> > La pregunta es, ¿Tu programa como termina las filas?
> >
> > Si abres el archivo que generó tu programa con otra aplicación
> > (gedit o WordPad) ¿También ves una sola fila?
> >
> > En caso de que si, si sabes que el largo de cada registro es
> > constante, pues creo que tu solución primera es hacer un
> > pequeños programa que te vaya segmentando tu texto.
> >
> > Si tienes el código de tu programa de Qbasic, checa si lo
puedes
> > transformar en un macro o compilalo con RealBasic para que lo
> > tengas listo para Windows, Linux y MAC.
> >
> > -
> >
> >
> >
> >
> > -
> > Mi Office genera: Seguridad, Confianza y Ahorro
> >
> >
> > J. Eduardo Moreno
> > TOKONHU de México
> > 044 55 2748 4840
> >
> >
> >
> >
> > Ante todo gracias por tu respuesta. Abriendo el archivo con
> > gedit se ve una sola fila, y si, separando esa fila de acuerdo
a
> > la longitud del registro, que es constante, tengo gran parte de
> > mi problema solucionado. pero esto es lo que no logro hacer.
> > intente insertar un caracter especial con el awk con el
> > siguiente script:
> >
> > awk 'BEGIN {RS=""} {for(i=1;i<1268;i++) {for(j=1;j<23;j++)
> > print $(i*j)} print "/n"}' CONCEPTO.PRO> convert.txt
> >
> > con RS="", hago que lea de a un caracter por vez, el archivo a dividir
> > tiene 27896 caracteres, la longitud de registro= 22, (1268 ciclos de 22
> > da 27986), entonces en el ciclo mas chico imprimia $i*j , el caracter
> > tal como esta en el archivo original, y a la salida del ciclo chico
> > imprime un /n newline, que usaria como separador de registro, pues
> > bueno, si bien no da error, no funciona.
> >
> > transcribo parte del archivo CONCEPTO.PRO (uno de los que tengo que
> > migrar, el mas simple):
> >
> > 82 l99010 DIEZ 82 199110 DIEZ 82 199210 DIEZ
> > 1001990LICENCIA. 1001991LICENCIA. 1001992LICENCIA 80
> > 199010 (Diez) 80 199110 (Diez) 80 199210 (Diez) 81 199010
> > DIEZ 81 199110 DIEZ 81 19929.66 (Nueve.66)40 19909.33
> > (Nueve.33)40 199110 (Diez) 40 199210 (Diez) 48 19908 (Ocho)
> > 48 19918.33 (Ocho.33) 48 19927.66 (Siete.66)1 19908 (ocho) 1
> > 19918.33 (ocho/33) 1 19929.33 (nueve/33)2 19909.66 (Nueve.66)2
> > 19919.66 (Nueve.66)2 199210 (Diez) 3 19909 (Nueve) 3 199110
> > (Diez) 3 199210 (Diez) 4 1990 4 19919.33
> > (nueve.33)4 19929.33 (nueve.33)5 19908.66 (Ocho.66) 5 19919 (Nueve)
> > 5 19929.33 (Nueve.33)6 19919.33 (Nueve.33)6 19929 (Nueve) 7
> > 19908.66 (Ocho.66) 7 19918.66 (Ocho.66) 7 19929 (nueve) 12
> > 19909.33 (Nueve.33)13 19909 (Nueve) 13 1991 13 19929
> > (Nueve)
> >
> > y parte del archivo convert.txt resultante
> >
> > 82
> >
> > l99010
> > DIEZ
> > 82
> > 199110
> > DIEZ
> > 82
> > 199210
> > DIEZ
> > 1001990LICENCIA.
> > 1001991LICENCIA.
> > 1001992LICENCIA
> > 80
> > 199010
> > (Diez)
> > 80
> > 199110
> > (Diez)
> > 80
> > 199210
> > (Diez)
> > 81
> > l99010
> > 82
> > DIEZ
> > 199210
> > 1001990LICENCIA.
> > 1001992LICENCIA
> > 199010
> > 80
> > (Diez)
> > 199210
> > 81
> > DIEZ
> > 199110
> > 81
> > (Nueve.66)40
> > (Nueve.33)40
> > (Diez)
> > 199210
> > 48
> > (Ocho)
> > 19918.33
> > 48
> > DIEZ
> > DIEZ
> > DIEZ
> > 1001992LICENCIA
> > (Diez)
> > (Diez)
> > (Diez)
> > DIEZ
> > DIEZ
> >
> >
> > de nuevo,gracias por tu atencion
> >
> > kike
> >
> Kike y amigos de la lista.
>
> Prueba estos comandos del shell que te puede ayudar:
>
> $ i=1;f=22; for ((reg=1;reg<11;reg++)); do cut -c$i-$f CONCEPTO.PRO ;
> i=$(($f+1));f=$(($f+22)); done > convert.txt
>
> Funciona para los 10 registros que enviaste a la lista.
>
> Cordial Saludo.
>
Estado ausente de la lista por un tiempo y ahora al volver me he
encontrado con este problema que yo tuve meses atrás.
Mi problema era parecido: un fichero de registros de longitud fija (500
caracteres) y sin carácter de separación. Cada registro con campos de
longitud fija.
Solución: "cortar" primero los registros cada 500 caracteres insertando
un final de línea o retorno de carro.
Esto se hace con el comando "sed" de unix/linux.
sed -e 's/\(.\{500\}\)/\1\n/g' entrada > salida.txt
Para saber aquí se explica el comando sed con ejemplos de una forma muy
didáctica.
http://www.gentoo.org/doc/es/articles/l-sed1.xml
Saludos a todos.
JJ Palacios
Tudela (Navarra)
Gracias a todos, en cuanto llegue a mi casa pruebo las soluciones dadas, y
trato de enterderlas para poder
reutilizarlas.
kike
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]