Tengo un archivo que solo se usa \n
para nuevas líneas, pero necesito que lo tenga \r\n
para cada nueva línea. ¿Cómo puedo hacer esto?
Por ejemplo, lo resolví en Vim usando :%s/\n/\r\n/g
, pero me gustaría usar un script o una aplicación de línea de comandos. ¿Alguna sugerencia?
Intenté buscar esto con sed
o grep
, pero las soluciones alternativas de la secuencia de escape me confundieron de inmediato (estoy un poco verde con estos comandos).
Si está interesado, la aplicación está relacionada con mi pregunta / respuesta aquí
CR
antes de cada LF, solo antes de aquellos LF que no estén precedidos por un (y solo uno) CR.'\r'
consed
hace el truco.Esto es exactamente lo que
unix2dos
hace:Eso reemplazará
file.txt
en el lugar con una versión con terminaciones de línea CRLF.Si desea hacerlo
sed
, puede insertar un retorno de carro al final de cada línea: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 lounix2dos
hace), usesed -i.bak
, aunque esa es una extensión no estándar; si no la tiene, use un archivo temporal.fuente
\r
en reemplazo no es portátil. Al menos, no funcionará en Mac OSX.u2d
,ux2dos
,todos
ordena alrededor también.Si está realizando la conversión en una máquina Unix (OS X, Linux), abra el archivo con
vi
ovim
:presione la tecla ESC para asegurarse de que no está en modo de inserción, luego escriba
o
Esto hace la conversión en su lugar al configurar el formato de archivo.
Para escribir el archivo y salir del editor, use
En la línea de comando puedes hacer
fuente
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 POSIXPOSIX Awk es compatible
\r
y\15
, sin embargo, la-i inplace
opción no es POSIXd2u y dos2unix no son utilidades POSIX , pero ex es
POSIX ex no soporta
\r
,\15
,\n
o\12
Para eliminar retornos de carro:
Para agregar retornos de carro:
fuente
Una función de shell portátil que hará esto:
Con eso puedes hacer:
fuente
En awk puedes intentar
O
El
$'\r'
es un ejemplo de estilo ANSI-C citando como soportado por unos cáscaras comoksh93
,bash
,zsh
,mksh
y FreeBSDsh
y es probable que se incluirán en cuestión 8 de la Single Unix Specification .Ofrece una forma general de expresar caracteres extraños, prueba esto, por ejemplo:
fuente