Necesito una utilidad / script de conversión que convierta un archivo de volcado .sql generado en Mac a uno legible en Windows. Esta es una continuación de un problema que tuve aquí . El problema parece ser con el formato de nueva línea en archivos de texto, pero no puedo encontrar una herramienta para hacer la conversión ...
133

Respuestas:
Windows usa
carriage return+line feedpara nueva línea:Unix solo usa
Line feedpara nueva línea:En conclusión, simplemente reemplace cada aparición de
\nby\r\n.Ambos
unix2dosydos2unixno están disponibles por defecto en Mac OSX.Afortunadamente, simplemente puede usar
Perlosedhacer el trabajo:Fragmento de código de:
http://en.wikipedia.org/wiki/Newline#Conversion_utilities
fuente
sedcomando para UNIX a DOS no me funciona en OS X Lion, simplemente inserta el texto "r" al final de cada línea. Sinperlembargo, el comando funciona.sed, pero puede solucionarlo sin instalar Homebrew, gnu-sed o unix2dos: Usesed -e 's/$/^M/' inputfile > outputfile, donde se^Mproduce un carácter de control en la línea de comandoCtrl+V Ctrl+M.$antes de la comilla simple que contiene el comando sed:sed $'s/\r$//'Explicación: bash decodifica la barra invertida-escape en$'...'cadenas. Consulte gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html para obtener más detalles.Esta es una versión mejorada de la respuesta de Anne: si usa perl, puede hacer la edición en el archivo 'en el lugar' en lugar de generar un nuevo archivo:
fuente
Can't do inplace edit on file: Permission denied.y eliminar el archivo. Busque otras utilidades en su lugar.Puedes instalar unix2dos con Homebrew
Entonces puedes hacer esto:
También puede convertir archivos DOS a Unix:
fuente
dos2unix. Usted querrábrew install dos2unix.brew install unix2dosobrew install dos2unixfunciona bien. Instalan el mismo paquete. Usa el nombre que teport install dos2unix.Probablemente quieras unix2dos :
Puede ejecutar
unix2dosen su máquina DOS / Windows usando cygwin o en su Mac usando MacPorts .fuente
Solo
trborra:fuente
wc -l).trcomando para realizar varias conversiones. Usehexdumpo similar para averiguar exactamente qué tipo de convención de fin de línea se usa ahora en el archivo.find ./ -type f -exec dos2unix {} \;para convertir recursivamente todos los finales de línea dentro de la carpeta actualfuente
vimTambién puede convertir archivos de UNIX a formato DOS. Por ejemplo:fuente
El siguiente es un script completo basado en las respuestas anteriores, junto con la comprobación de cordura y funciona en Mac OS X y también debería funcionar en otros sistemas Linux / Unix (aunque esto no ha sido probado).
fuente
Aquí hay un enfoque realmente simple, funcionó bien para mí, cortesía del Weblog de Davy Schmeits :
Donde foo es el archivo que tiene los caracteres Control + M al final de la línea, y foo2 el nuevo archivo que está creando.
fuente
En Yosemite OSX, use este comando:
donde la
^Msecuencia se logra presionando Ctrl+ Vluego Enter.fuente
sedqué entienden barra invertida-escapa como\ry `` \ n 'y por lo tanto también puede utilizar estos en la sustitución. En realidad, no tiene que ingresar un control-M literal para referirse a ese carácter (o cualquier otro). El principio de usarsed(y-i) para hacer cualquier tipo de conversión de este tipo es muy bueno, porque, a diferenciatr, no está limitado a "un personaje a la vez".Ampliando las respuestas de Anne y JosephH, usando perl en un script corto de perl, ya que soy demasiado vago para escribir el perl-one-liner muy a la vez.
Cree un archivo, llamado por ejemplo "unix2dos.pl" y póngalo en un directorio en su ruta. Edite el archivo para contener las 2 líneas:
Suponiendo que "which perl" devuelve "/ usr / bin / perl" en su sistema. Haga que el archivo sea ejecutable (chmod u + x unix2dos.pl).
Ejemplo:
$ echo "hola"> xxx
$ od -c xxx (comprobando que el archivo termina con un nl)
0000000 hola \ n
$ unix2dos.pl xxx
$ od -c xxx (comprobando que termina ahora en cr lf)
0000000 hola \ r \ n
fuente
En Xcode 9 en el panel izquierdo, abra / elija su archivo en el navegador de proyectos . Si el archivo no está allí, colóquelo en el navegador del proyecto .
En el panel derecho, busque la configuración de texto y cambie los finales de línea a Windows (CRLF) .
XCode screendump
fuente