Saltos de línea DOS y UNIX


([N1] alozano) #1

Muy buenas a todos de nuevo, a ver si alguien me puede echar una mano con este problema:

Tengo que depurar unos ficheros que están en formato UNIX, para los saltos de línea, y deben estar en este formato para el software que los usa.

Si abro ese fichero con un editor simple como notepad veo todas las líneas juntas, algo normal ya que \n no es suficiente para mostrar el salto correctamente. Si abro el fichero con un editor avanzado entiende perfectamente el salto de línea y me muestra esas líneas bien.

Cuando trato con Velneo el fichero este lee correctamente las líneas pero cuando genero un nuevo fichero con solo las líneas correctas al grabar las líneas estas tiene el salto de línea de DOS, \r\n, cuando el software lee este fichero añade a cada línea un carácter y me tira para atrás, este carácter se corresponde al \r que para UNIX sobra.

Mi solución fue en vez de grabar línea a línea las buenas, almacenarlas en una variable y hacerles un replace de \r\n por \n. Aparentemente funciona, si abro el fichero con un bloc de notas se ve todo junto, si uso un editor avanzado se ven correctamente línea a línea.
El problema está que cuando el software lee el fichero el error que se encuentra es que no entiende el salto de línea.

¿Cómo puedo procesar las líneas para que estén correctamente en formato UNIX? Parece ser que con \n no es suficiente, ¿he de indicarle alguna codificación en especial cuando creo el nuevo fichero?


([N4] innovadb) #2

Nosotros también tuvimos ese problema.

http://sourceforge.net/projects/dos2unix/files/dos2unix/6.0.5/

Un saludo


([N1] alozano) #3

Actualmente la solución que se usaba implicaba un script externo que usaba dos2unix, la idea era tenerlo todo en Velneo y a poder ser sin necesitar de librerías o ejecutables externos.

Si no hay más remedio implementaremos dos2unix, pero por motivos que se me escapan, al añadir el \n en vez de sustituirlo ahora si reconoce bien el salto de línea y lo procesa, bendita ciencia infusa.

Muchas gracias por tu comentario innovad.


([N2] ramiro) #4

Buenos días:

Algo similar me ha pasado recientemente con unos ficheros ascii que exportaba para una contabilidad. Los generaba en local y era relativamente lento…

Al pasarlo a 3P y descargarlo con Sdv la Contabilidad rechazaba el formato (el servidor de la nube supongo que estará bajo Linux y usa un carácter de fin de linea distinto).

La solución fue simple: Tras descargar el fichero lo abría en local (en el Pc de la Conta) leyéndolo Línea a Linea (V7 reconoce tanto el formato de Linux como el de Windows) volviendo a grabar cada Linea en otro fichero. De esta forma garantizo que la marca de fin de linea se adecúe al SO de la Conta, sea cual sea.

Saludos. Ramiro