Remova o padrão especial ^ M do script que foi anexado após o FTP do Windows para o Unix

1

Eu envio um arquivo do Windows usando FTP para um sistema Unix e tenho anexado ^M onde quer que uma nova linha tenha sido planejada, e eu só quero removê-los.

Um método que eu posso optar é executar o comando dos2unix .

Alguém pode sugerir outro método como o comando sed para remover esses padrões?

    
por Ataul Haque 13.05.2015 / 12:44

3 respostas

2

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
    
por 14.05.2015 / 02:24
1

dos2unix:

sed -i -r -e 's/\r$//' file

unix2dos:

sed -i -r -e 's/$/\r/' file
    
por 14.05.2015 / 03:54
0

Usando sed :

sed 's/^M//g' filename > newfilename
    
por 13.05.2015 / 12:50