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: Julio C. Neves
Subject: Re: [shell-script] [OFF TOPPIC] substituir quebra de linha após caracter
Date: Tue, 31 May 2011 13:51:37 -0300

Fala China,
o ^M é o \r ou em octal o \015. Assim sendo, fica aqui a dica para todos:

Troque:
unix2dos -ad arquivo.csv
 por:
tr -d '\015' < arquivo.csv
ou:
tr -d '\r' < arquivo.csv

Como no teu caso, que ainda tinha de excluir os sinais de igual e as linhas
vazias, isso seria um prato cheio, pois iria tudo no mesmo tr e a linha
final seria assim:

tr -d '\r\n=' < arquivo.csv | sed 's/0A/\n/g'

Só mais uma dicazinha: se vc tivesse feito:
cat -vet arquivo.cvs
vc teria visto os famigerados ^M do Mal. ;)

Abcs,
Julio



Em 31 de maio de 2011 08:59, China <address@hidden> escreveu:

>
>
> Fala Mestre!
>
> A bagaça foi resolvida, motivo dobrado pro chopp!!!! Lhe aguardo aqui!!!
>
> Em 30 de maio de 2011 23:26, Julio C. Neves <address@hidden>
> escreveu:
> >
> >
> >
> > Fala China,
> > O Moacir tá me cobrando um chope. Vou ver se acerto no que vc quer, para
> que
> > vc pague o nosso chope em BH e eu pagaria o do Moacir. Tudo serve de
> > pretexto para uma gelada... ;)
> >
> > $ tr -d '\n=' < tst | sed 's/0A/\n/g'
> >
> > Nessa linha o tr mata as linha em branco e os sinais de igual, ficando o
> > arquivo inteiro numa única linha. O sed troca os 0A (os sinais de igual
>
> > dançaram no tr) por uma quebra de linha.
> >
> > Assim funciona? Eu e o Moa estamos com sede... ;)
> >
> > Cordialmente,
> >
> > Julio Neves
> >
> > *Quer programar bem em Shell?*
> >
> > *Use este endereço de e-mail, o Skype ou ☎ (21)8112-9988 ☎*
> > My profiles: [image: Twitter] <http://twitter.com/juliobash>
> > Contact me: [image: Skype] julioneves1
>
> >
> > Em 30 de maio de 2011 16:41, China <address@hidden> escreveu:
> >
> > > 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,
>
> > > > 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
> > >
> > >
> > > ------------------------------------
> > >
> > > ----------------------------------------------------------
> > > 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: address@hidden
> > > ----------------------------------------------------------
> > > 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
> > >
> > >
> > >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
>
> --
> --
> @chinabhz
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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