unix2dos crlf convert bash shell sed command-line dos2unix

bash - convert - unix crlf



Convertir terminaciones de lĂ­nea (2)

Algunas opciones:

Usando tr

tr -d ''/15/32'' < windows.txt > unix.txt

O

tr -d ''/r'' < windows.txt > unix.txt

Usando perl

perl -p -e ''s//r$//'' < windows.txt > unix.txt

Usando sed

sed ''s/^M$//'' windows.txt > unix.txt

O

sed ''s//r$//'' windows.txt > unix.txt

Para obtener ^M , debe escribir CTRL-V y luego CTRL-M .

He estado usando d2u para convertir los finales de línea. Después de instalar Puppy Linux noté que no viene con d2u , sino con dos2unix . Entonces noté que Ubuntu faltaba tanto por defecto.

¿Cuál es otra forma de convertir finales de línea?


Hacer esto con POSIX es complicado:

  • POSIX Sed no es compatible con /r o /15 . Incluso si lo hizo, la opción in-situ no es POSIX

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

  • d2u y dos2unix no son utilidades POSIX , pero ex

  • POSIX ex no es compatible con /r , /15 , /n o /12

Para eliminar devoluciones de carro:

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

Para agregar retornos de carro:

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