¿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.

usuario25321
fuente
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
RaYell
fuente
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.
Peter Mortensen
fuente
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\)")
fitorec
fuente
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.

Steven Penny
fuente
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'

fuente
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
Steven Penny
fuente
0

Si, uso dos2unix. Por ejemplo:

[justin@mybox ~]$ dos2unix myfile
Justin Ethier
fuente
0

$ recode dos .. ARCHIVO
$ flip -u ARCHIVO

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


fuente