sed – ¿Cómo agregar un retorno de carro antes de cada nueva línea?

Pregunta:

Tengo un archivo que solo usa \n para nuevas líneas, pero necesito que 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 me confundí inmediatamente con las soluciones alternativas de la secuencia de escape (estoy un poco verde con estos comandos).

Si está interesado, la aplicación está relacionada con mi pregunta / respuesta aquí.

Respuesta:

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 los LF que no están ya precedidos por un (y solo uno) CR y omitirá los archivos binarios (aquellos que contienen valores de bytes en el rango 0x0 -> 0x1f excepto LF , FF , TAB o CR ).

o use sed :

CR=$(printf '\r')
sed "s/\$/$CR/" file

o usa awk :

awk '{printf "%s\r\n", $0}' file

o:

awk -v ORS='\r\n' 1 file

o use perl :

perl -pe 's|\n|\r\n|' file

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım