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: Roberto Alves
Subject: Re: [shell-script] Juntar linhas que tenham ^M (no AIX)
Date: Thu, 5 Feb 2009 10:37:53 -0300

[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
>>
>>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 


reply via email to

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