shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Juntar linhas que tenham ^M (no AIX)


From: jimmy
Subject: Re: [shell-script] Juntar linhas que tenham ^M (no AIX)
Date: Thu, 5 Feb 2009 11:51:15 -0200
User-agent: Mutt/1.4.2.3i

On Thu, Feb 05, 2009 at 10:37:53AM -0300, Roberto Alves wrote:
> [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 <address@hidden>:
> > 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 <address@hidden>
> >
> >> 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
> >>
> 
> ------------------------------------

não manjo de AIX, mas aqui vai um chute:

sed '
/\r$/ {
  :join;
  N;
  /[^\r]$/ {
    s/\r\n//g;
    b;
 }
 bjoin;
}' arquivo


-- 
" Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------


reply via email to

[Prev in Thread] Current Thread [Next in Thread]