Introducción
Los archivos creados en DOS/Windows usan retorno de carro (\r ) y avance de línea (\n ) para finales de línea. Sin embargo, los archivos en Unix/Linux solo usan avance de línea.
Por lo tanto, al transferir un archivo de un sistema a otro, asegúrese de convertir los archivos.
En este tutorial, aprenderá a transferir archivos de DOS a Unix y viceversa.
Conversión de archivos en Linux
Hay varias formas de transferir archivos para usar los finales de línea apropiados. Convierte los archivos usando:
dos2unix
comandounix2dos
comandosed
comando (consulte el tutorial del comando sed de Linux)tr
comando- Vi/Vim editor de texto (consulte la hoja de trucos de los comandos de Vim)
perl
comando de una línea
Opción 1:Conversión de DOS a UNIX con el comando dos2unix
La forma más sencilla de convertir saltos de línea en un archivo de texto es usar dos2unix herramienta.
Instale la herramienta ejecutando el comando:
sudo apt install dos2unix
o:
sudo dnf install dos2unix
Si descarga un archivo creado en DOS/Windows en su sistema Linux, puede convertirlo utilizando dos2unix
comando:
dos2unix [file_name]
El comando convierte el archivo sin guardarlo en el formato original. Si desea guardar el archivo original, agregue -b
atributo antes del nombre del archivo. Al hacerlo, se crea un archivo de copia de seguridad con el mismo nombre y el .bak extensión.
dos2unix -b [file_name]
Opción 2:Conversión de UNIX a DOS usando el comando unix2dos
Para convertir un archivo creado en un sistema Linux al formato DOS, ejecute el comando:
unix2dos [file_name]
Alternativamente, agregue el -b
atributo para guardar el archivo original como copia de seguridad:
unix2dos -b [file_name]
Opción 3:usar el comando sed
También puede usar el sed
(editor de flujo) comando para eliminar la línea de retorno de carro terminaciones La sintaxis del comando para hacerlo es:
sed 's/^M$//' [original_file_name]>[converted_file_name]
En lugar de simplemente escribir ^M
, presione Ctrl+V
seguido de Ctrl+M
para introducir el símbolo de retorno de carro. Al usar el sed
comando, especifique el nombre del archivo DOS [original_file_name]
y cómo desea nombrar el archivo convertido [converted_file_name]
.
Para cambiar el formato de archivo de Unix a DOS , usa el comando:
sed 's/$/^M/' [original_file_name]>[converted_file_name]
Opción 4:usar el comando tr
Otra forma de convertir un archivo al formato Unix es eliminar \r terminaciones de línea con tr
dominio. El tr
command es una utilidad de línea de comandos para traducir o eliminar caracteres.
Utilice el comando en el siguiente formato:
tr -d '\r' < [original_file_name]>[converted_file_name]
Opción 5:usar el editor de texto Vim
También puede eliminar los finales de línea de retorno de carro de los archivos en formato DOS utilizando el editor de texto Vi/Vim.
Abra el archivo en Vi/Vim:
vi [file_name]
Luego presione :
y escriba el siguiente comando Vi/Vim (asegúrese de escribir Ctrl+V
entonces Ctrl+m
en lugar de ^m
):
:%s/^ m //g
Opción 6:Usar Perl One Liner
Por último, puede usar un comando de una sola línea de Perl para eliminar todos los \r terminaciones de línea Pearl on-liners son scripts que caben en una sola línea de código.
Para reemplazar todos los finales de retorno de carro y avance de línea con solo avances de línea:
1. Abra el archivo en el editor de texto Vi/Vim.
2. Presione :
para solicitar la línea de comando.
3. Escriba el siguiente comando y presione Entrar:
perl -pi -e 's/\r\n/\n/g' [file_name]
Debería ver los cambios en el archivo de inmediato.
Ejemplo:convertir un archivo de muestra de DOS a formato Unix
Supongamos que descargó un archivo llamado sample-dos-file .
Al abrir el archivo con el editor de texto Vim/Vi, verá que después de cada línea que termina hay ^M
(un retorno de carro).
Otra forma de ver que el archivo utiliza tanto el retorno de carro como el salto de línea para los finales de línea es ver el archivo en valores octales.
Para hacerlo, ejecute el comando:
od -bc sample-dos-file.txt
La salida muestra el contenido del archivo con sus valores octales, como en la imagen de abajo. Puede ver que cada final de línea está marcado con los valores octales 015 (\r) y 012 (\n) .
Ahora, para convertir el archivo y eliminar todas las terminaciones de retorno de carro, debe ejecutar el comando:
dos2unix sample-dos-file
Abra el mismo archivo en Vim/Vi. No incluye ninguna ^M
símbolos que señalan el final de la línea.
Para confirmar que el archivo está en formato Unix, también puede abrir y ver el contenido en valores octales. La salida debe mostrar solo el 012 valores para \n .