2009/2/5 Roberto Alves <ralve...@gmail.com> > [OFF] > Opa, Julio, eu havia escrito no final um "PS" falando exatamente que > eu não te liguei mais pra falar de show porque saí da banda mas tirei > com medo de alguém reclamar. > Agora estou a procura. > Se o Aurelio verde morasse por aqui já tinha um baterista pra se > juntar a mim e procurarmos o restante da banda. > Por enquanto to brincando de eletrônica novamente fazendo uns pedais > de efeito e amps pra mim. Assim não fico longe da música e mantenho a > cabeça funcionando e arejada. > Podexá que quando eu voltar a tocar te aviso, com certeza! > Antes disso vamos marcar um chopp, ok? > [/OFF] > > Obrigado, Julio e Moacir, > eu já havia testado com o tr também, esqueci de dizer. > Eu procurei a dica no livro maravilhoso que tenho aqui autografado. > > Julio, o " -i.veio ...." não funciona e você disse que caso não tiver > a opção -i pra testar > sed -i.veio 's/\015//' arquivo > arquivo.novo > > eu tirei o -i.veio e não acontece nada. > > Moacir, sua dica funciona mas eu não to conseguindo manter as outras > linhas que não tem o ^M, ou seja, ele junta todo o arquivo em uma > linha só. > O tr não procura a sequência (já sem tremas) do carriage return + new line. > > Se eu faço: > tr -s '\n' ' ' < teste > teste2 ; vi teste2 > ele junta todas as linhas em uma só. > > Se eu faço: > tr -s '\r' ' ' < teste > teste2 ; vi teste2 > ele apenas remove os ^M. > > E se eu faço: > tr -s '\r\n' ' ' < teste > teste2 ; vi teste2 > Apenas os ^M sumem, também. > > As linhas que eu queria que se juntassem (as que contêm o ^M seguidos > de \n) não se juntam. > Não sei se expliquei bem.... > > No AIX é tão complicado...putz.... > > Obrigado, Moacir e Julio, > abraços a todos. > > Roberto > > > 2009/2/5 Julio C. Neves <julio.ne...@gmail.com>: > > Fala Roberto, > > como vão as coisa? Tocando muito? Vamos montar uma banda Shell? ;) > > > > Se vc simplesmente quiser excluir os CTRL+M (carriage return (CR) ou > octal > > \015) faça assim: > > > > sed -i.veio 's/\015//' arquivo > > > > O arquivo será alterado nele mesmo, porém antes, o véio será copiado para > > arquivo.veio de forma a que vc possa voltar. > > > > Ops! Acabei de me lembrar que vc usa AIX e acho que o sed dele não tem a > > opção -i. Caso não tenha, faça assim: > > > > sed -i.veio 's/\015//' arquivo > arquivo.novo > > > > e se arquivo.novo estiver do jeito que vc quer faça: > > > > mv -f arquivo.novo arquivo > > > > Isso (o CTRL+M) normalmente é provocado por um ftp (ou algo do gênero) > > transferindo um arquivo de uma máquina rwin (aqui fim de linha é LF, lá é > > CR+LF para ter certeza que vai funcionar ;). > > > > Se for este o caso, use no ftp a opção ascii, que a conversão é > automática. > > > > Qdo for tocar me avise. Eu e minha metade-cara ;) adoramos o show e o > jantar > > daquela noite. > > -- > > Abração, > > Julio > > *Cursos de Shell e Zenity nos finais de semana: > > - Em SP ligue (11) 2125-4747; > > - Em DF ligue (61) 3223-3000; > > - No RJ brevemente; > > - Turmas fechadas em outras cidades ligue (21) 8112-9988 > > * > > 2009/2/5 Roberto Alves <ralve...@gmail.com> > > > >> Senhores, > >> creio que já tenham respondido isso zilhões de vezes mas eu estou > >> tentando no AIX. > >> Me pareceu que ia ser algo bem simples de se fazer mas não consegui. > >> > >> Eu recebo um arquivo que poucas são as vezes que algumas linhas vêm > >> com aqueles caracteres de controle de carro (^M). > >> Eu consigo, na mão, trocar tudo e juntar as linhas, no vi. > >> Basta eu trocar ( 's/^M\n//g' ) os caracteres seguidos de uma nova > >> linha por nada. > >> > >> Como eu posso automatizar isso? > >> Vale lembrar que para procurar o ^M eu digito contro+v+m. > >> > >> Tentei, no linux, e isso funcionou mas quando passei pro AIX não. > >> > >> sed -e :a -e N -e 's/\^M\n//' -e ta arquivo > novoarquivo > >> > >> Olhando o help do sed no AIX ele me mostrou isso: > >> > >> A sample sed script file: > >> :join > >> > >> /\\$/{N > >> > >> s/\\\n// > >> > >> b join > >> > >> } > >> > >> Daí resolvi tentar mas não consegui: > >> > >> sed > >> :join > >> /^M$/{N > >> s/^M\n// > >> join > >> } > >> arquivo > arquivonovo > >> > >> Se alguém puder dar uma sugestão eu agradeço. > >> > >> abraços, > >> Roberto > >> > >> > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > ------------------------------------ > > --------------------------------------------------------------------- > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > --------------------------------------------------------------------- > Sair da lista: shell-script-unsubscr...@yahoogrupos.com.br > --------------------------------------------------------------------- > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > --------------------------------------------------------------------- > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > Links do Yahoo! Grupos > > > Veja se isto ajuda:
sed ':z;/\r/{N;s/\r\n//;tz}' arquivo Basicamente o que está acontecendo aí é um loop com o seguinte algoritmo rótulo z Se a linha possui \r então faça concatene com a próxima linha substitua a ocorréncia de \r\n por nada se substituição_ok então vá para z fim_se fim_Se Clareou? -- Fabiano Caixeta Duarte Especialista em Redes de Computadores Linux User #195299 Ribeirão Preto - SP [As partes desta mensagem que não continham texto foram removidas]