¿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.
dos2unixun programa Unix / Linux para hacer lo que quieras.
¿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.
dos2unixun programa Unix / Linux para hacer lo que quieras.
Respuestas:
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.
\rtambién. Sin embargo, son muy poco comunes.
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.
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'
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
Si, uso dos2unix. Por ejemplo:
[justin@mybox ~]$ dos2unix myfile
dos2unixgeneralmente está disponible, de lo contrariosed -e 's/\r$//'