Linux slogan
Visite também: BR-Linux.org · Dicas-L · NoticiasLinux · SoftwareLivre.org · UnderLinux · BestLinux
» Screenshot
Linux: Meu primeiro Linux
Por vagnersl



» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha

» Wallpaper
Linux: Evil tux
Por dark_lilo

Dica

Solução para arquivos com ^M no final de cada linha
Linux user
Publicado por Rafael Brianezi da Silva em 27/08/2008

Login: raf-tiger, 34053 pontos Homepage:
[ Hits: 602 ]

Solução para arquivos com ^M no final de cada linha

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.


Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada Utilizando o Alien
   Dica Linux recomendada Baixando arquivos utilizando o wget
   Dica Linux recomendada Extrair a data de uma fotografia
   Dica Linux recomendada SSH com chave pública + SVN por SSH
   Dica Linux recomendada Como listar arquivos ordenados por tamanho

Comentários
Comentário enviado por antxnix em 27/08/2008 - 13:13h:

bacana a dica. vou anotar.

embora quando crio arquivos de textos no win eu utilizo o notepad++ http://notepad-plus.sourceforge.net/

. que ja faz este servico, basta ir em FORMAT -> CONVERT TO UNIX FORMAT. há também uma aplicacao linux (dos2unix) que faz isso tb, embora nao tenha usado.

valeu

Comentário enviado por viniciuscordeiro em 27/08/2008 - 13:52h:

Quem se interessar em usar o dos2unix pra facilitar a vida, acabei de publicar um post no meu blog:

http://blog.viniciuscordeiro.com/

http://blog.viniciuscordeiro.com/2008/08/transformando-arquivos-para-formato-unix-dos/

Comentário enviado por SMarcell em 27/08/2008 - 14:25h:

Também pode-se utilizar o tr:

$ tr -s '\r' '\n' < arq.txt > novo_arq.txt




Contribuir com comentário
  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Contribuir com: [ Artigo | Conf | Dica | Pergunta | Script | Screenshot | Simulado | Wallpaper ]
Responsável pelo site: Fábio Berbert de Paula - Copyleft© 2002-2008 Viva o Linux.com.br

Viva o Linux

A maior comunidade Linux do Brasil! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.