Por fin después de mucho batallar hemos encontrado el resultado de este rompecabezas que algunos los usuarios de este sitio han presentado. Si tienes alguna información que compartir puedes aportar tu información.
Solución:
Puede usar unix2dos (que se encuentra en Debian):
unix2dos file
Tenga en cuenta que esta implementación no insertará un CR
antes de cada LF
solo antes de esos LF
s que aún no están precedidos por uno (y solo uno) CR
y omitirá los archivos binarios (aquellos que contienen valores de bytes en el rango 0x0 -> 0x1f que no sea LF
, FF
, TAB
o CR
).
o usar sed
:
CR=$(printf 'r')
sed "s/$/$CR/" file
o usar awk
:
awk 'printf "%srn", $0' file
o:
awk -v ORS='rn' 1 file
o usar perl
:
perl -pe 's|n|rn|' file
Esto es exactamente lo que unix2dos
lo hace:
$ unix2dos file.txt
Eso reemplazará file.txt
en el lugar con una versión con terminaciones de línea CRLF.
Si quieres hacerlo con sed
puede insertar un retorno de carro al final de cada línea:
sed -e 's/$/r/' file.txt
Esto reemplaza (s
) el área de tamaño cero justo antes del final de la línea ($
) con r
. Para hacer un reemplazo en el lugar (como unix2dos
hace), uso sed -i.bak
aunque esa es una extensión no estándar; si no la tiene, use un archivo temporal.
Hacer esto con POSIX es complicado:
-
POSIX Sed no es compatible
r
o15
. Incluso si lo hiciera, la opción en el lugar-i
no es posix -
POSIX Awk es compatible
r
y15
sin embargo, el-i inplace
la opción no es POSIX -
d2u y dos2unix no son utilidades POSIX, pero ex es
-
POSIX ex no es compatible
r
,15
,n
o12
Para eliminar los retornos de carro:
awk 'BEGINRS="1";ORS="";getline;gsub("r","");print>ARGV[1]' file
Para agregar retornos de carro:
awk 'BEGINRS="1";ORS="";getline;gsub("n","r&");print>ARGV[1]' file
Si posees alguna perplejidad o forma de modernizar nuestro tutorial te mencionamos realizar una explicación y con deseo lo leeremos.