¿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.
dos2unix
un 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.
dos2unix
un 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.
\r
también. Sin embargo, son muy poco comunes.
Hay una utilidad Unix llamada conv
que puede convertir terminaciones de línea. A menudo se invoca con enlaces suaves a u2d
o d2u
o unix2dos
odos2unix
.
Además hay utilidades llamadas fromdos
y 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 \r
o \15
. Incluso si lo hiciera, la opción en el lugar -i
no es POSIX
POSIX Awk es compatible \r
y \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
, \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
Si, uso dos2unix
. Por ejemplo:
[justin@mybox ~]$ dos2unix myfile
dos2unix
generalmente está disponible, de lo contrariosed -e 's/\r$//'