Remover ^M de arquivos no VI

Quando transportamos um arquivo do Windows para o Unix e o editamos no VI, muitas vezes encontramos aqueles ^M no final de cada linha. No meu caso gerei um DML via script e ele ficou repleto desses caracteres, impossibilitando o processamento.

Isso acontece pois no DOS/Windows o <enter> é representado por 2 caracteres (retorno de cursor e quebra de linha) enquanto no Linux ele é representado apenas pela quebra de linha.

Pois bem, se nós usarmos o comando “<Esc>+/^M” (sem as aspas) o vi irá procurar por linhas que comecem com a letra M, pois isso é uma expressão regular e o caractere “^” representa início de linha.

A forma correta a se usar seria a seguinte “<Esc>+/<Ctrl>V<Ctrl>M“, assim iremos achar todos os ^M que desejamos no final das linhas.

Porém o nosso objetivo aqui não é simplesmente achar os ^M e sim retirá-los, portanto iremos usar o seguinte comando “<Esc>:%s/\r//g“, assim iremos substituir todas as ocorrências do ^M até o final do arquivo.