Pregunta

Si puedo abrir los archivos que he creado en Windows, las líneas de todos los finales con ^M.
¿Cómo puedo eliminar estos personajes a la vez?

¿Fue útil?

Solución

dos2unix es una utilidad de línea de comandos que va a hacer esto, o :%s/^M//g si lo uso Ctrl-v Ctrl-m a la entrada de la ^M, o puede :set ff=unix y vim va a hacer por usted.

Docs en el "formato de archivo" configuración son aquí, y el vim wiki tiene un amplio página en línea de final de conversiones.

Alternativamente, si mueve los archivos de ida y vuelta mucho, puede que no desee convertir, sino para hacer :set ff=dos, por lo que vim sabrá que es un DOS archivos y el uso de DOS convenios para finales de línea.

Otros consejos

Cambiar los finales de línea en la vista:

:e ++ff=dos
:e ++ff=mac
:e ++ff=unix

Esto también puede ser utilizado como el ahorro de operación (:w solo no va a ahorrar con los finales de línea que se ve en pantalla):

:w ++ff=dos
:w ++ff=mac
:w ++ff=unix

Y se puede utilizar desde la línea de comandos:

for file in *.cpp
do 
    vi +':w ++ff=unix' +':q' "$file"
done

Yo normalmente uso

:%s/\r/\r/g

lo que me parece un poco raro, pero funciona porque de la manera que vim coincide con saltos de línea.También me resulta más fácil de recordar :)

Yo prefiero usar el siguiente comando :

:set fileformat=unix

También puede utilizar mac o dos para convertir el archivo de macintosh o de MS-DOS y MS-Windows archivo de la convención.Y no hace nada si el archivo ya está en el formato correcto.

Para obtener más información, consulte la ayuda de vim :

:help fileformat
:%s/\r+//g

En Vim, que elimina todos los retornos de carro, y deja sólo el carácter de nueva línea.

:set fileformat=unix para convertir de dos a unix.

dos2unix puede modificar directamente el contenido del archivo.

Usted puede utilizar directamente en el archivo, sin necesidad de que el archivo temporal de la redirección.

dos2unix input.txt input.txt

El anterior utiliza el supuesto que NOS teclado.El uso de la -437 opción para utilizar el reino unido teclado.

dos2unix -437 input.txt input.txt

Convertir el directorio de archivos de dos a Unix

Utilizando la línea de comandos y sed, encontrar todos los archivos en el directorio actual con la extensión ".ext" y eliminar todos "^M"

@ https://gist.github.com/sparkida/7773170

find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;

también, como se mencionó anteriormente ^M = Ctrl+V + Ctrl+M (no sólo tiene que escribir el símbolo de intercalación símbolo "^" y M)

tr -d '\15\32' < winfile.txt > unixfile.txt

(ver: http://kb.iu.edu/data/acux.html)

Pasos siguientes puede convertir el formato de archivo de dos a unix:

:e ++ff=dos  Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:setlocal ff=unix    This buffer will use LF-only line endings when written.[A 2]
:w   Write buffer using unix (LF-only) line endings.

Referencia: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix

Con el siguiente comando:

:%s/^M$//g 

Obtener la ^M a aparecer el tipo de CtrlV entonces CtrlM. CtrlV dice Vim para tomar el siguiente carácter introducido, literalmente.

He encontrado una manera muy fácil:Abra el archivo con nano: nano file.txt

Pulse CTRL+O para guardar, pero antes de pulsar Entrar, pulse: ALT+D para alternar entre DOS y Unix/Linux línea de terminaciones, o: ALT+M para alternar entre Mac y Unix/Linux línea de terminaciones, a continuación, presione Entrar para guardar y CTRL+X para dejar de fumar.

:g/Ctrl-v Ctrl-m/s///

CtrlM es el personaje \r, o retorno de carro, que DOS de los finales de línea agregar. CtrlV dice vim para insertar un literal CtrlM carácter en la línea de comandos.

Tomado como un todo, este comando reemplaza todos \r con nada, la eliminación de ellos de los extremos de las líneas.

Usted puede utilizar:

vim somefile.txt +"%s/\r/\r/g" +wq

o dos2unix utility .

El comentario acerca de la introducción de la ^M a aparecer es lo que ha funcionado para mí.Simplemente escribiendo "^M" en mi vi no tiene nada que hacer (no se encuentra).El CTRL+V CTRL+M secuencia lo hizo a la perfección, aunque.

Mi trabajo de sustitución de comando fue

:%s/Ctrl-V Ctrl-M/\r/g

y parecía que esta en mi pantalla:

:%s/^M/\r/g

Puede utilizar el siguiente comando:
:%s/^V^M//g
donde el '^' uso de los medios CTRL clave.

a continuación se utiliza el comando para formatear todo .sh archivo en el directorio actual, lo he comprobado en mi Fedora OS.

for file in *.sh; do awk '{ sub("\r$", ""); print }' $file >luxubutmp; cp -f luxubutmp $file; rm -f luxubutmp ;done

Por lo general hay una dos2unix el comando se puede utilizar para esto, sólo asegúrese de que usted lea el manual de GNU y BSD versiones difieren sobre cómo hacer frente a los argumentos.

Versiones de BSD:

dos2unix $FILENAME $FILENAME_OUT
mv $FILENAME_OUT $FILENAME

Versión de GNU:

dos2unix $FILENAME

Alternativamente, usted puede crear su propio dos2unix con ninguna de las respuestas aquí, por ejemplo:

function dos2unix(){
    [ "${!}" ] && [ -f "{$1}" ] || return 1;

    { echo ':set ff=unix';
      echo ':wq';
    } | vim "${1}";
}

Yo sabía que me había visto en algún lugar.Aquí está el FreeBSD inicio de sesión de consejo:

Necesidad de retirar todos aquellos ^M caracteres de un DOS archivo?Trate de

tr -d \\r < dosfile > newfile
    -- Originally by Dru <genesis@istar.ca>

En vim, escriba:

:w !dos2unix %

Esto va a canalizar el contenido de la actual buffer a la dos2unix de comandos y escribir los resultados sobre el contenido actual.Vim le pregunte para volver a cargar el archivo después de la

Para ejecutar directamente en la consola de linux:vim file.txt +"set ff=unix" +wq

Aunque este tema es muy viejo, me gustaría poner otra cosas de wikia:

%s/\r\+$//g

que llenan encontrar todos retorno de carro signos (de una o más repeticiones) hasta el final de la línea y eliminar, por lo que sólo \n va a permanecer en eol.

Esta es mi manera.Abrí un archivo en dos EOL y al guardar el archivo que se convertirá automáticamente en unix EOL

autocmd BufWrite * :set ff=unix

si crea un archivo en el Bloc de notas o NotePad ++ en windows y llevarlo a Linux y open por vim, verá ^M al final de cada línea.Para eliminar esto,

En su terminal de Linux, tipo de

dos2unix nombre de archivo.ext

Esto va a hacer el necesario arte de magia.

Yo quería saltos de línea en lugar de la ^M.Perl para el rescate:

perl -pi.bak -e 's/\x0d/\n/g' excel_created.txt

O escribir a stdout:

perl -p -e 's/\x0d/\n/g' < excel_created.txt
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top