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: Julio C. Neves
Subject: Re: [shell-script] Juntar linhas que tenham ^M (no AIX)
Date: Thu, 5 Feb 2009 10:19:47 -0200

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]