Pergunta

Se eu abrir arquivos que eu criei no Windows, as linhas de todos os finais ^M.
Como faço para excluir esses personagens tudo de uma vez?

Foi útil?

Solução

dos2unix é um utilitário de linha de comando que vai fazer isso, ou vontade :%s/^M//g se você usar Ctrl - v Ctrl -. m para introduzir o ^ m, ou você pode :set ff=unix e vim vai fazer isso por você

Documentos sobre a configuração 'fileformat' são aqui , e o vim wiki tem um href="http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix" na linha que termina conversões .

Como alternativa, se você mover arquivos e para trás muito, você não pode querer convertê-los, mas sim para fazer :set ff=dos, por isso vim vai saber que é um arquivo DOS e usar convenções DOS para finais de linha.

Outras dicas

Alterar os fins de linha no modo de exibição:

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

Isto pode também ser usado como economia de operação (: w só não salvará utilizando os fins de linha que você vê na tela):

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

E você pode usá-lo a partir da linha de comando:

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

Eu normalmente uso

:%s/\r/\r/g

que parece um pouco estranho, mas funciona por causa da maneira que corresponda vim linefeeds. Também acho mais fácil de lembrar:)

Eu prefiro usar o seguinte comando:

:set fileformat=unix

Você também pode usar mac ou dos, respectivamente, converter o arquivo para Macintosh ou convenção arquivo MS-DOS / MS-Windows. E ele não faz nada se o arquivo já está no formato correto.

Para obter mais informações, consulte a ajuda vim:

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

No vim, que retira todos os retornos de carro, e deixa apenas novas linhas.

:set fileformat=unix converter de DOS para Unix.

dos2unix pode modificar diretamente o conteúdo do arquivo.

Você pode usá-lo diretamente no arquivo, sem a necessidade de redirecionamento de arquivo temporário.

dos2unix input.txt input.txt

Os usos acima dos assumiu teclado dos EUA. Use a opção -437 usar o teclado do Reino Unido.

dos2unix -437 input.txt input.txt

diretório Convert de arquivos do DOS para o Unix

Usando linha de comando e sed, encontrar todos os arquivos no diretório atual com o ".ext" extensão e remover todos os '^ 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;

também, conforme mencionado acima ^ H = Ctrl + V + + M (não simplesmente digitar o sinal de intercalação "^" símbolo e M)

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

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

Os passos podem converter o formato de arquivo para DOS para 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.

Referência: http://vim.wikia.com/wiki/ Change_end-de-line_format_for_dos-mac-unix

Com o seguinte comando:

:%s/^M$//g 

Obter o ^M apareça tipo Ctrl V , em seguida, Ctrl M . Ctrl V diz ao Vim para dar o próximo caractere digitado literalmente.

Eu encontrei uma maneira muito fácil: Abra o arquivo com nano: nano file.txt

Pressione Ctrl + O para salvar, mas antes de pressionar Enter , pressione: ALT + D para alternar betwen DOS e Unix / Linux linha-finais, ou: ALT + M para alternar betwen Mac e Unix / Linux linha-finais, em seguida, pressione < kbd> Enter para salvar e Ctrl + X para sair.

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

Ctrl M é o \r caráter, ou retorno de carro, que finais de linha DOS adicionar. Ctrl V diz vim a inserção de um literal Ctrl M carácter na linha de comando.

Como um todo, este comando substitui todos \r com nada, removendo-os das extremidades das linhas.

Você pode usar:

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

ou dos2unix utility.

O comentário sobre a obtenção do ^ M a aparecer é o que funcionou para mim. Apenas digitando "^ M" na minha vi nada tem (não encontrado). A CTRL + V CTRL + M sequência fez perfeitamente embora.

Meu comando de substituição de trabalho era

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

e parecia que esta na minha tela:

:%s/^M/\r/g

Você pode usar o seguinte comando:
:%s/^V^M//g
onde os meios '^' usar Ctrl chave.

abaixo comando é usado para formatar todos os arquivos .sh no diretório atual, eu testei no meu Fedora OS.

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

Normalmente, existe um comando dos2unix você pode usar para isso, apenas certifique-se de ler o manual como o GNU e versões BSD divergem sobre como eles lidam com os argumentos.

versão BSD:

dos2unix $FILENAME $FILENAME_OUT
mv $FILENAME_OUT $FILENAME

versão GNU:

dos2unix $FILENAME

Como alternativa, você pode criar seu próprio dos2unix com qualquer uma das respostas aqui proposto, por exemplo:

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

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

Eu sabia que eu tinha visto isso em algum lugar. Aqui é a ponta de login FreeBSD:

necessidade de remover todas essas ^ personagens M de um arquivo DOS? Tentar

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

No vim, digite:

:w !dos2unix %

Este tubo vontade o conteúdo do seu buffer corrente para o comando dos2unix e escrever os resultados sobre o conteúdo atual. Vim irá pedir para recarregar o arquivo depois

Para executar diretamente no console do Linux: vim file.txt +"set ff=unix" +wq

Embora este tema é muito antiga, eu gostaria de colocar outro material da Wikia:

%s/\r\+$//g

que enchem encontrar todos os sinais de retorno de carro (uma e mais repetições) até o final da linha e excluir, por isso só \n vai ficar em eol.

Esta é a minha maneira. Abri um arquivo no dos EOL e quando eu salvar o arquivo que irá converter automaticamente para unix EOL

autocmd BufWrite * :set ff=unix

Se você criar um arquivo no bloco de notas ou Notepad ++ no Windows e trazê-lo para o Linux e abra-o vim, você vai ver ^ M no final de cada linha. Para remover este,

No seu terminal Linux, digite

dos2unix filename.ext

Isso vai fazer a mágica necessária.

Eu queria novas linhas no lugar da ^ M de. Perl para o resgate:

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

ou escrever na saída padrão:

perl -p -e 's/\x0d/\n/g' < excel_created.txt
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top