it-swarm-es.com

¿Cómo convertir saltos de línea en un archivo de texto entre los formatos Windows y Unix / Linux?

¿Cómo convierto los saltos de línea en un archivo de texto entre los formatos Windows y Unix/Linux?

Tengo un entorno * nix, pero necesito importar y exportar datos con los saltos de línea al estilo de Windows. Pensé que habría una utilidad o comando estándar para hacer esto, pero parece que no puedo encontrarlo.

33
alexeit

Probablemente estés buscando dos2unix, unix2dos, todos o fromdos dependiendo de su distribución. Paquete Ubuntu/Debian todos/fromdos como parte del paquete tofrodos de la memoria.

42
saschabeaumont

Una opción es usar unix2dos (Y dos2unix Para regresar) en la línea de comando.

Otra es usar un editor de texto:
Para vi:: establezca ff = dos para establecer que las terminaciones de línea sean terminaciones de línea dos.
Para emacs: C-x [ENTER] f dos [ENTER]

Para su editor basado en GUI favorito (por ejemplo, jedit), le recomiendo consultar el manual o Google.

Por último, si no desea lidiar con un editor de texto y simplemente hacerlo utilizando utilidades más comunes y demás (o no tiene unix2dos instalado):

tr -d '\r' < infile > outfile Para ir desde Windows -> Unix
awk 'sub("$", "\r")' unixfile.txt > winfile.txt para ir de Unix -> Windows ya que tr no puede ir de Unix a Windows.

24
Chealion

Edítelo en Vim y use el set fileformat comando.

  • MS-DOS/Windows (CR + LF se rompe) a * nix (LF solo se rompe)

    :set fileformat=unix
    :wq
    
  • * nix a MS-DOS/Windows

    :set fileformat=dos
    :wq
    
13
nedm

Esto es lo que uso, similar a Chealion, para convertir Windows a finales de línea Unix:

tr -d \\015 < windows > unix
8
Josh

Hacer esto con POSIX es complicado:

  • POSIX Sed no es compatible con \r o \15. Incluso si lo hiciera, la opción en el lugar -i no es POSIX

  • POSIX Awk admite \r y \15, sin embargo, el -i inplace la opción no es POSIX

  • d2u y dos2unix no son tilidades POSIX , pero ex es

  • POSIX ex no admite \r, \15, \n o \12

Para eliminar retornos de carro:

awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file

Para agregar retornos de carro:

awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
1
Steven Penny