Como converto 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 ou comando padrão para fazer isso, mas não consigo encontrá-lo.
Você provavelmente está procurando por dos2unix
, unix2dos
, todos
ou fromdos
dependendo da sua distribuição. Pacote Ubuntu/Debian todos
/fromdos
como parte do pacote tofrodos da memória.
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 as terminações da linha como sendo finais da linha dos.
Para o emacs: C-x [ENTER] f dos [ENTER]
Para o seu editor favorito baseado em GUI (por exemplo, jedit), recomendo verificar o manual ou o Google.
Por fim, se você não deseja lidar com um editor de texto e apenas o usa usando utilitários mais comuns e afins (ou não possui o unix2dos instalado):
tr -d '\r' < infile > outfile
Para ir do Windows -> Unixawk 'sub("$", "\r")' unixfile.txt > winfile.txt
para ir do Unix -> Windows como tr
não pode ir do Unix para o Windows.
Edite-o no Vim e use o set fileformat
comando.
MS-DOS/Windows (quebras de CR + LF) para * nix (apenas quebras de LF)
:set fileformat=unix
:wq
* nix para MS-DOS/Windows
:set fileformat=dos
:wq
É isso que eu uso, semelhante ao Chealion, para converter o Windows em finais de linha Unix:
tr -d \\015 < windows > unix
Fazer isso com o POSIX é complicado:
POSIX Sed não suporta \r
ou \15
. Mesmo assim, a opção em vigor -i
não é POSIX
POSIX Awk suporta \r
e \15
, No entanto, o -i inplace
opção não é POSIX
d2u e dos2unix não são tilitários POSIX , mas ex é
POSIX ex não suporta \r
, \15
, \n
ou \12
Para remover retornos de carro:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file
Para adicionar retornos de carro:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file