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

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

Re: [shell-script] [OFF TOPPIC] substituir quebra de linha após caracter


From: China
Subject: Re: [shell-script] [OFF TOPPIC] substituir quebra de linha após caracter
Date: Mon, 30 May 2011 16:41:05 -0300

A sequencia que você enviou deu certo, mas onde estavam a quebra de
linha apareceu um caracter ^M, que está sendo interpretado pelo editor
de textos como quebra de linha. O vim mostra a linha intteira, com
esse caracter ^M no meio, ficando "phon
^Me1" ao invés de "phon
e1". Na hora de abrir com o editor de textos gedit as linhas estão
sendo quebradas justamente aí onde eram antes. Ou seja, continua meu
problema.

Em 30 de maio de 2011 16:28, Cléoson Barreto
<address@hidden> escreveu:
>
>
>
> Olá!
>
> Considerando que o "0A" é o fim da linha, tentei fazer dessa forma, vê
> se atende:
>
> $ cat teste.txt
> id;username;email;firstname;lastname;idnumber;institution;department;phon=
> e1;phone2;city;url;icq;skype;aim;yahoo;msn;country;profile_field_Setor;pr=
> ofile_field_Telefone;profile_field_UF;profile_field_matricula;profile_fie=
> ld_cargo;profile_field_localizacao;profile_field_lotacao;profile_field_em=
> ailalternativo=0A=
> id;username;email;firstname;lastname;idnumber;institution;department;phon=
> e1;phone2;city;url;icq;skype;aim;yahoo;msn;country;profile_field_Setor;pr=
> ofile_field_Telefone;profile_field_UF;profile_field_matricula;profile_fie=
> ld_cargo;profile_field_localizacao;profile_field_lotacao;profile_field_em=
> ailalternativo=0A=
> id;username;email;firstname;lastname;idnumber;institution;department;phon=
> e1;phone2;city;url;icq;skype;aim;yahoo;msn;country;profile_field_Setor;pr=
> ofile_field_Telefone;profile_field_UF;profile_field_matricula;profile_fie=
> ld_cargo;profile_field_localizacao;profile_field_lotacao;profile_field_em=
> ailalternativo=0A=
>
> $ sed ':a;$!N;s/\n//g;ta; s/=//g; s/0A/\n/g' teste.txt
> id;username;email;firstname;lastname;idnumber;institution;department;phone1;phone2;city;url;icq;skype;aim;yahoo;msn;country;profile_field_Setor;profile_field_Telefone;profile_field_UF;profile_field_matricula;profile_field_cargo;profile_field_localizacao;profile_field_lotacao;profile_field_emailalternativo
> id;username;email;firstname;lastname;idnumber;institution;department;phone1;phone2;city;url;icq;skype;aim;yahoo;msn;country;profile_field_Setor;profile_field_Telefone;profile_field_UF;profile_field_matricula;profile_field_cargo;profile_field_localizacao;profile_field_lotacao;profile_field_emailalternativo
> id;username;email;firstname;lastname;idnumber;institution;department;phone1;phone2;city;url;icq;skype;aim;yahoo;msn;country;profile_field_Setor;profile_field_Telefone;profile_field_UF;profile_field_matricula;profile_field_cargo;profile_field_localizacao;profile_field_lotacao;profile_field_emailalternativo
>
> --
> []'s
> Cléoson.
>
> Em 30 de maio de 2011 16:16, China <address@hidden> escreveu:
>
> > Pessoal, acho que não coloquei o problema de forma clara. O arquivo
> > contem zilhares de linhas, e não apenas uma linha. A linha que
> > coloquei no exemplo é apenas a primeira. O conjunto citado pelo colega
> > nessa mensagem acaba com todas as quebras de linha fazendo com que o
> > arquivo tenha apenas uma linha, e não é esse o objetivo. O objetivo é
> > eliminar as quebras de linha apenas após o sinal de =(equal), em todas
> > as linhas do arquivo.
> >
> > As soluções que tentei sozinho também resultaram em algo semelhante,
> > com apenas uma linha...
> >
> > Em 30 de maio de 2011 16:11, Cléoson Barreto
> > <address@hidden> escreveu:
> > >
> > >
> > >
> > > Olá!
> > >
> > > Esqueci de colocar um "g" no final de "...s/=//...". O comando ficaria
> > > assim:
> > > $ sed ':a;$!N;s/\n//g;ta; s/=0A/;/g; s/=//g' teste.txt
> > >
> > >
> > id;username;email;firstname;lastname;idnumber;institution;department;phone1;phone2;city;url;icq;skype;aim;yahoo;msn;country;profile_field_Setor;profile_field_Telefone;profile_field_UF;profile_field_matricula;profile_field_cargo;profile_field_localizacao;profile_field_lotacao;profile_field_emailalternativo;
> > >
> > > --
> > > []'s
> > > Cléoson.
> > >
> > > Em 30 de maio de 2011 16:06, Cléoson Barreto
> > > <address@hidden>escreveu:
> > >
> > > > Olá!
> > > >
> > > > Acho que isso deve ajudar:
> > > >
> > > > $ cat teste.txt
> > > >
> > id;username;email;firstname;lastname;idnumber;institution;department;phon=
> > > >
> > e1;phone2;city;url;icq;skype;aim;yahoo;msn;country;profile_field_Setor;pr=
> > > >
> > ofile_field_Telefone;profile_field_UF;profile_field_matricula;profile_fie=
> > > >
> > ld_cargo;profile_field_localizacao;profile_field_lotacao;profile_field_em=
> > > > ailalternativo=0A=
> > > >
> > > > $ sed ':a;$!N;s/\n//g;ta;s/=//; s/=0A/;/g' teste.txt
> > > >
> > > >
> > id;username;email;firstname;lastname;idnumber;institution;department;phone1;phone2;city;url;icq;skype;aim;yahoo;msn;country;profile_field_Setor;pr=ofile_field_Telefone;profile_field_UF;profile_field_matricula;profile_fie=ld_cargo;profile_field_localizacao;profile_field_lotacao;profile_field_em=ailalternativo;=
> > > >
> > > > Vi referência sobre isso aqui:
> > > > http://aurelio.net/sed/sed-HOWTO/sed-HOWTO-7.html#toc1
> > > >
> > > >
> > > > --
> > > > []'s
> > > > Cléoson.
> > > >
> > > >
> > > > Em 30 de maio de 2011 15:53, China <address@hidden> escreveu:
> > > >
> > > >>
> > > >>
> > > >> Caros;
> > > >>
> > > >>
> > > >> Tenho que trabalhar um arquivo separado pro ponto e vírgula para dar
> > > >> carga num banco de dados. Porém este arquivo está com um defeito, que
> > > >> é a quebra de linhas onde não deveria haver. Reparei que ANTES de cada
> > > >> quebra de linha tem um caracter =(equal), então pensei na
> > > >> possibilidade de usar o SED para a tarefa de eliminar o caracter = e
> > > >> retirar a quebra de linha. A estrutura está assim:
> > > >>
> > > >>
> > id;username;email;firstname;lastname;idnumber;institution;department;phon=
> > > >>
> > > >>
> > e1;phone2;city;url;icq;skype;aim;yahoo;msn;country;profile_field_Setor;pr=
> > > >>
> > > >>
> > ofile_field_Telefone;profile_field_UF;profile_field_matricula;profile_fie=
> > > >>
> > > >>
> > ld_cargo;profile_field_localizacao;profile_field_lotacao;profile_field_em=
> > > >>
> > > >> ailalternativo=0A=
> > > >>
> > > >> Reparem que algumas palavras estão separadas por um = seguido por uma
> > > >> quebra de linha, e que o =0A= é o fim da linha. No caso do =0A= basta
> > > >> mandar substituir por um ; (ponto e virgula), mas não encontrei uma
> > > >> forma de suprimir o = e a quebra de linha para que o resultado fisse a
> > > >> linha inteira, como deve ser o seguinte (não sei se o gmail vai
> > > >> quebrar as linhas, mas segue):
> > > >>
> > > >>
> > > >>
> > id;username;email;firstname;lastname;idnumber;institution;department;phone1;phone2;city;url;icq;skype;aim;yahoo;msn;country;profile_field_Setor;profile_field_Telefone;profile_field_UF;profile_field_matricula;profile_field_cargo;profile_field_localizacao;profile_field_lotacao;profile_field_emailalternativo;
> > > >>
> > > >> Não encontrei nos vários exemplos de sed uma forma de fazer isso.
> > > >> Podem me ajudar?
> > > >>
> > > >> --
> > > >> @chinabhz
> > > >>
> > > >>
> > > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> >
> >
> > --
> > --
> > @chinabhz
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 


--
--
@chinabhz


reply via email to

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