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 feed
para nueva línea:Unix solo usa
Line feed
para nueva línea:En conclusión, simplemente reemplace cada aparición de
\n
by\r\n
.Ambos
unix2dos
ydos2unix
no están disponibles por defecto en Mac OSX.Afortunadamente, simplemente puede usar
Perl
osed
hacer el trabajo:Fragmento de código de:
http://en.wikipedia.org/wiki/Newline#Conversion_utilities
fuente
sed
comando para UNIX a DOS no me funciona en OS X Lion, simplemente inserta el texto "r" al final de cada línea. Sinperl
embargo, el comando funciona.sed
, pero puede solucionarlo sin instalar Homebrew, gnu-sed o unix2dos: Usesed -e 's/$/^M/' inputfile > outputfile
, donde se^M
produce 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 unix2dos
obrew install dos2unix
funciona bien. Instalan el mismo paquete. Usa el nombre que teport install dos2unix
.Probablemente quieras unix2dos :
Puede ejecutar
unix2dos
en su máquina DOS / Windows usando cygwin o en su Mac usando MacPorts .fuente
Solo
tr
borra:fuente
wc -l
).tr
comando para realizar varias conversiones. Usehexdump
o 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
vim
Tambié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
^M
secuencia se logra presionando Ctrl+ Vluego Enter.fuente
sed
qué entienden barra invertida-escapa como\r
y `` \ 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