Como converter as quebras de linha em um arquivo de texto entre os formatos Windows e Unix / Linux?

32

Como faço para converter as quebras de linha em um arquivo de texto entre os formatos Windows e Unix / Linux?

Eu tenho um ambiente * nix, mas preciso importar e exportar dados com as quebras de linha no estilo do Windows. Eu pensei que haveria um utilitário padrão ou um comando para fazer isso, mas não consigo encontrá-lo.

    
por alexeit 08.05.2009 / 06:44

5 respostas

41

Provavelmente você está procurando dos2unix , unix2dos , todos ou fromdos dependendo da sua distribuição. Pacote Ubuntu / Debian todos / fromdos como parte do pacote tofrodos da memória.

    
por 08.05.2009 / 06:55
23

Uma opção é usar unix2dos (e dos2unix para voltar) na linha de comando.

Outra é usar um editor de texto:
Para vi:: defina ff = dos para definir os finais de linha como finais de linha.
Para emacs: C-x [ENTER] dos [ENTER]

Para o seu editor favorito baseado em GUI (por exemplo, jedit), eu recomendo verificar o manual ou o Google.

Por último, se você não quer lidar com um editor de texto e apenas o faz usando utilitários mais comuns e tal (ou não tem o unix2dos instalado):

tr -d '\r' < infile > outfile para ir do Windows - > Unix
awk 'sub("$", "\r")' unixfile.txt > winfile.txt para ir do Unix - > Windows como tr não pode ir do Unix para o Windows.

    
por 08.05.2009 / 06:56
12

Edite-o no Vim e use o comando set fileformat .

  • MS-DOS / Windows (quebras de CR + LF) para * nix (somente quebra de LF)

    :set fileformat=unix
    :wq
    
  • * nix para o MS-DOS / Windows

    :set fileformat=dos
    :wq
    
por 08.05.2009 / 22:56
7

Isso é o que eu uso, semelhante ao Chealion, para converter o Windows em finais de linha do Unix:

tr -d \015 < windows > unix
    
por 07.10.2012 / 20:20
0

Fazer isso com o POSIX é complicado:

Para remover retornos de carro:

awk 'BEGIN{RS="";ORS="";getline;gsub("\r","");print>ARGV[1]}' file

Para adicionar retornos de carro:

awk 'BEGIN{RS="";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
    
por 18.07.2016 / 03:39