¿Hay un comando Bash para convertir \ r \ n a \ n?


19

¿Hay un comando Bash para convertir \ r \ n a \ n?

Cuando subo mis scripts de Windows a Linux, necesito una utilidad como esta para que todo funcione.


77
dos2unixgeneralmente está disponible, de lo contrariosed -e 's/\r$//'
— falstro

1
No, no hay un comando Bash para eso, pero hay dos2unixun programa Unix / Linux para hacer lo que quieras.
— Pausado hasta nuevo aviso.

1
¿Por qué no usa un editor de texto sano que le permite elegir el estilo de nueva línea al guardar archivos?
— vtest

Respuestas:


28

Ahi esta:

dos2unix

Esta es la respuesta históricamente correcta, aunque dos2unix no siempre está disponible en estos días.
— Jared

5

Translate ( tr ) está disponible en todos los Unixes:

tr -d '\r'  # From \r\n line end (DOS/Windows), the \r will be removed so \n line end (Unix) remains.

1
Tiene un efecto secundario de eliminar cualquier otro \rtambién. Sin embargo, son muy poco comunes.
— ivan_pozdeev

5

Con sed y encuentra ese final con .txt, .php, .js, .css:

 sed -rie 's/\r\n/\n/' \
 $(find . -type f -iregex ".*\.\(txt\|php\|js\|css\)")

5

Hay una utilidad Unix llamada convque puede convertir terminaciones de línea. A menudo se invoca con enlaces suaves a u2do d2uo unix2dosodos2unix .

Además hay utilidades llamadas fromdosy todos.


2

Usando man 1 ed (que edita archivos in situ sin ninguna copia de seguridad previa, a diferencia de: sed .. -i ".bak" ...):

ed -s file <<< $'H\ng/\r*$/s///\nwq'

Ni siquiera lo sabía, pero hace el trabajo (viejo pero dorado)
— dwana

Este comando funcionó para mí cuando los comandos de otras respuestas no existían en el alojamiento compartido que estoy usando. Gracias :)
— FKasa

2

Hacer esto con POSIX es complicado:

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

  • POSIX Awk es compatible \ry \15, sin embargo, el-i inplace opción no es POSIX

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

  • POSIX ex no soporta \r, \15, \no\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


0

$ recode dos .. ARCHIVO
$ flip -u ARCHIVO

(Cada uno también existe para sistemas que no son Ubuntu, pero estos enlaces son útiles).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.