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]

Responder a