Você criou um arquivo texto no Windows, e ao abrí-lo no
Linux apareceu um ^M no final de cada linha? Veja como usar o Perl para resolver!
Digite a linha de comando abaixo, em um prompt Linux:
$ perl -pi -e 's/\r/\n/g' arquivo.txt
Explicação sobre o comando:
- perl - interpretador de comandos em si;
- -p = faz a leitura de todos os argumentos como arquivos e faz um print de todas as linhas no fim do processamento de cada uma;
- -i = edita os arquivos que recebe como argumento;
- -e = executa a expressão informada a seguir;
- 's/\r/\n/g' = s/string_atual/string_nova/g, onde:
s = Significa "substitute", ou seja, é utilizado no formato s/// quando se deseja substituir uma string por outra;
g = Significa que toda vez que for encontrada a "string_atual" no arquivo, esta será substituída pela "string_nova".
Obs.: Caso o "g" não seja especificado, somente a primeira ocorrência encontrada sera substituída.
\r = Representa o final de linha no padrão DOS/Windows;
\n = Representa o final de linha no padrão Unix/Linux.
Caso você necessite aplicar este comando em muitos arquivos, segue abaixo uma sugestão. :)
$ find /diretório_arquivos -type f -exec perl -pi -e 's/\r/\n/g' {} \;
Onde:
- find = Efetua a busca especificada;
- /diretório_arquivos = Diretório que contém os arquivos;
- -type f = Significa (file), ou seja, somente estaremos pesquisando somente em arquivos;
- -exec = Executa um comando;
- perl -pi -e 's/\r/\n/g' = Comando já explicado acima;
- {} \; = Indica que o comando perl -pi -e 's/\r/\n/g' será aplicado em todos os arquivos que forem encontrados pelo comando find.