¿Cuál es la mejor manera de convertir los CRLF en alimentaciones de línea en archivos en Linux?
He visto comandos sed , pero ¿hay algo más simple?
linux
carriage-return
JoelFan
fuente
fuente
Respuestas:
Usa este comando:
Al revés:
Estos comandos se encuentran en el paquete tofrodos (en las distribuciones más recientes), que también proporciona los dos envoltorios unix2dos y dos2unix que imitan las antiguas herramientas de unix del mismo nombre.
fuente
find . -name '*.txt' -print0 | xargs -null fromdos
Uso
dos2unix
.fuente
Prefiero perl :
Pero eso se adapta bien a mis usos, y es muy fácil para mí recordarlo. No todos los sistemas tienen un comando dos2unix, pero la mayoría en la que trabajo tienen un intérprete perl.
Otro es recode , un poderoso reemplazo para dos2unix e iconv; está disponible en el paquete "recode" en los repositorios de Debian:
Para los fanáticos de awk :
... y sed :
Y ahora, solo un poco menos complicado que borrar los CR a mano en un editor hexadecimal, directamente de uno de nuestros amigos de stackoverflow.com , utilizable con el intérprete de carne (ubicado en el repositorio Debian de su amigable vecindario),
dos2unix en brainfuck !
¡Muchas gracias a JK por perder una hora de su vida para escribir esto!
fuente
Hago esto en Bash :
fuente
Creo que también puedes usar
tr
(aunque no tengo archivos de formato divertidos para probar):fuente
En vi o Vim :
fuente
Encontré una manera muy fácil ... Abrir archivo con nano: ## nano file.txt
presione Ctrl + O para guardar, pero antes de presionar Enter presione: Alt + D para alternar entre las terminaciones de línea de DOS y Unix / Linux, o: Alt + M para alternar entre las terminaciones de línea de Mac y Unix / Linux, luego presione Enter para guardar y Ctrl + X para salir.
fuente
Alt+d
. A veces, el programa terminal intercepta alt, por lo que puede usarloesc+d
en su lugar.Prefiero Vim y
:set fileformat=unix
. Si bien no es el más rápido, me da una vista previa. Es especialmente útil en el caso de un archivo con terminaciones mixtas.fuente
Si desea un método GUI, pruebe el editor de texto Kate (otros editores de texto avanzados también pueden manejarlo). Abra el cuadro de diálogo buscar / reemplazar ( Ctrl+ R) y reemplace
\r\n
con\n
. (Nota: tendrá que elegir "Expresión regular" en el menú desplegable y anular la selección de "Selección solamente" de las opciones).EDIT: O, si lo único que desea convertir a formato Unix, a continuación, utilizar la opción de menú
Tools
>End of Line
>Unix
.fuente
\r\n
a\n
continuación, mediante la búsqueda / reemplazo es más fácil de recordar qué usos OS cuales final de línea. ;)Pegue esto en el script de Python dos2unix.py .
Debería funcionar en cualquier plataforma con Python instalado. Dominio publico.
fuente
CR LF
paraLF
usar awk :Ejemplo de uso:
Explicación:
-v RS='\r?\n'
establece la variable RS ( input r ecord s eparator) en\r?\n
, lo que significa que la entrada se lee línea por línea separada por LF (\n
) que puede (?
) ir precedida por CR (\r
).1
es el script que ejecuta awk. Un guión consta decondition { action }
. En este caso,1
es la condición que se evalúa como verdadera. La acción se omite, por lo que se ejecuta la acción predeterminada, lo que significa imprimir la línea actual (que también podría escribirse como{print $0}
o simplemente{print}
).LF
aCR LF
: Se puede establecer la variableORS
( o utput r ECORD s eparator) para modificar los extremos de la línea de la salida. Ejemplo:fuente
Usé este script para archivos que necesitaba para transferir archivos de emergencia de un sistema Windows a un sistema Unix.
find . -type f
Encuentra todos los archivos, recursivamente, en el directorio desde el que ejecuta el comando
xargs file
Páselo al programa de archivo para obtener un análisis del archivo.
grep CRLF
Solo queremos la salida del archivo que muestra CRLF.
cut -d: -f1
Obtenga la salida hasta el color. descarta el resto. Solo deberíamos tener un nombre de archivo ahora
xargs dos2unix
Pase el nombre del archivo al programa dos2unix usando xargs .
fuente