As terminações de linha do Windows consistem na sequência de dois caracteres CR, LF. CR é o caractere de retorno de carro, às vezes representado como \r
, 5
, ^M
, etc. Uma terminação de linha Unix é apenas o caractere LF.
Uma forma de converter as terminações de linha do Windows em finais de linha do Unix usando apenas utilitários padrão presentes em todas as variantes do Unix é usar o % utilitáriotr
.
tr -d '\r' <thefile >thefile.new && mv thefile.new thefile
Se o arquivo já tiver finais de linha do Unix, seu conteúdo não será alterado.
Se você tiver muitos arquivos para transformar no diretório atual, poderá usar um loop. Supondo que você não tenha arquivos cujo nome termine com .new
:
for x in *; do
tr -d '\r' <"$x" >"$x.new" && mv "$x.new" "$x"
done
No Linux (excluindo alguns sistemas Linux embarcados) ou no Cygwin, você pode usar sed
. A opção -i
para editar um arquivo no lugar é específica para esses sistemas. A notação \r
para um caractere CR é mais difundida, mas não universal.
sed -i -e 's/\r//g' thefile