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

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

Re: [shell-script] Organizando extrato de banco!


From: Julio C. Neves
Subject: Re: [shell-script] Organizando extrato de banco!
Date: Tue, 5 Feb 2013 18:43:29 -0200

Uma coisa muito simples:

$ tr -d "\r" < file

Complicar as coisas simples para que? Nem todas as distros vêm com o
dos2unix instalado e a sintaxe do tr é tão simples...

Se quer complicar um pouquinho, então use sed que tb está presente em todas
as distros.

Abcs,
Julio
@juliobash


Em 5 de fevereiro de 2013 16:15, Alfredo Casanova
<address@hidden>escreveu:

> **
>
>
> O comando dos2unix deveria fazer isso também?
>
> 2013/2/5 Julio C. Neves address@hidden>
>
> > **
> >
> >
> > Fala Alfredo,
> > o que está te matando é esse "with CRLF line terminators" qdo vc dá um
> file
> > no arquivo. Aí é que está a zebra.
> >
> > Para desfazer esta lambança microsoftiana, faça:
> >
> > $ tr -d '\r' < extrato20130204-1552.csv > /tmp/$$
> > $ mv -f /tmp/$$ extrato20130204-1552.csv
> >
> > e agora é só correr para o abraço...
> >
> > Mágica? Não houve. O tr com a opção -d matou o CR (\r, mas tb poderia ter
> > sido \015, em octal) e deixou somente o LF como o LINUX gosta. A saída
> foi
> > enviada para um arquivo temporário com o nome igual ao PID do processo
> > ($$), que foi renomeado por cima do anterior.
> >
> > Abcs,
> > Julio
> > @juliobash
> >
> > Em 5 de fevereiro de 2013 11:59, Alfredo Casanova
> >
> > address@hidden>escreveu:
> >
> > > **
> > >
> > >
> > > seguem os testes:
> > >
> > > $ cat arq
> > > sem acento
> > > tb sem acento
> > > Essa é acentuada
> > > e essa tb, ó
> > > mas essa não é minha, Eça é de Queiroz
> > >
> > > $ echo $LANG
> > > en_US.UTF-8
> > >
> > > $ grep -o '[A-Za-z]' arq | xargs echo ' '
> > > s e m a c e n t o t b s e m a c e n t o E s s a é a c e n t u a d a e
> e s
> > > s a t b ó m a s e s s a n ã o é m i n h a E ç a é d e Q u e i r o z
> > >
> > > $ grep -o '[[:alpha:]]' arq | xargs echo ' '
> > > s e m a c e n t o t b s e m a c e n t o E s s a é a c e n t u a d a e
> e s
> > > s a t b ó m a s e s s a n ã o é m i n h a E ç a é d e Q u e i r o z
> > >
> > > $ file extrato20130204-1552.csv
> > > extrato20130204-1552.csv: ISO-8859 text, with CRLF line terminators
> > >
> > > $ cat extrato20130204-1552.csv | head -1
> > > "Data","Dependencia Origem","Hist�rico","Data do Balancete","N�mero do
> > > documento","Valor",
> > >
> > > $ iconv -t UTF-8 extrato20130204-1552.csv
> > > "Data","Dependencia Origem","Histiconv: illegal input sequence at
> > position
> > > 33
> > >
> > > $ iconv -f ISO-8859-15 -t UTF-8 extrato20130204-1552.csv | head -1
> > > "Data","Dependencia Origem","Histórico","Data do Balancete","Número do
> > > documento","Valor",
> > >
> > > adicionei a seguinte linha ao meu código:
> > >
> > > iconv -f ISO-8859-15 -t UTF-8 $1 -o $1
> > >
> > > 2013/2/4 Rafael Henrique da Silva Correia address@hidden>
> > >
> > > > Apenas acrescentando uma questão curiosa a este post:
> > > >
> > > > Estes dias estive fazendo um script em que pegava dados de uma página
> > > > web... quando mandei salvar em um arquivo ele também deu uma zuada...
> > > como
> > > > vc disse acima Alfredo... eu não conseguia converter e o trabalho com
> > > > vetores ficou complicado por ex:
> > > >
> > > > ${VETOR[@]} -> vinha somente um elemento (o último)... e estou MUITO
> > > > acostumado a utilizar isso em arquivos .csv (que trabalho
> diariamente)
> > > >
> > > > Acabei resolvendo o problema com o sed (que removia o CRLF do final
> das
> > > > linhas).
> > > >
> > > > Será que isso acontece quando a gente pega dados de coisas que já
> estão
> > > em
> > > > UTF-8?
> > > >
> > > > Funçãozinha que eu fiz:
> > > >
> > > > # Esta função serve para "buscar" battletags da página da Blizzard
> > (quem
> > > > joga diablo 3 vai entender isso)
> > > > # Não se preocupem com o objetivo do script pois ele é bem idiotinha
> > > :)...
> > > > legal foi a zica que deu
> > > >
> > > > update_BTlist(){
> > > > TOPIC=( $(lynx -source http://us.battle.net/d3/pt/forum/3357729/ | \
> > > > awk -F"href=" '( $1 ~ "../topic" || $2 ~ "../topic" ){
> > > > split($2,vet,"\".."); print "http://us.battle.net/d3/pt/forum";
> vet[2]
> > > }')
> > > > )
> > > >
> > > > for((cont=0;cont<"${#TOPIC[@]}";cont++)); do
> > > > echo "Progresso $(( ($cont+1) * 100 / ${#TOPIC[@]} )) %"
> > > > BATTLETAG=( ${BATTLETAG[@]} $(lynx -source "${TOPIC[$cont]}" | awk
> > > > -F"href=" '( $1 ~ "view-d3-profile" || $2 ~ "view-d3-profile" ) {
> > > > split($2,vet,"profile/"); print vet[2] }' | sed "s/\/\">//g") )
> > > > done
> > > >
> > > > echo "${BATTLETAG[@]}" | tr " " "\n" >> "$BTDBtmp"
> > > > sort -u "$BTDBtmp" > "$BTDB"
> > > >
> > > > # O texto original do arquivo é: assembler source, UTF-8 Unicode
> text,
> > > > with CRLF line terminators
> > > > # Para remover o CRLF do arquivo basta executarmos o seguinte comando
> > > > abaixo:
> > > > sed -i 's/.$//' "$BTDB"
> > > > # desta forma o arquivo vira um: assembler source, UTF-8 Unicode text
> > > >
> > > > Bom coloquei o script só para ilustrar os "erros", não levem a mal
> por
> > > > favor e se virem algo errado CRITIQUEM :-).
> > > >
> > > > Att.
> > > >
> > > > Em 4 de fevereiro de 2013 16:26, Alfredo Casanova
> > > > address@hidden>escreveu:
> > > >
> > > > > **
> > > > >
> > > > >
> > > > > Boa tarde pessoal
> > > > > Resolvi fazer um sistema pra organizar alguns extratos de banco,
> mas
> > > logo
> > > > > de cara me deparei com um problema.
> > > > >
> > > > > Quando dou um grep na coluna de descrição dos gastos, ele dá pau
> nas
> > > > > palavras com caracteres non-ascii. Tentei fazer um "iconv -t
> > > > > 'ascii//TRANSLIT', pois os acentos não me fariam falta, mas ele me
> > deu
> > > o
> > > > > seguinte erro:
> > > > >
> > > > > iconv: illegal input sequence at position 33
> > > > >
> > > > > position 33 era um "ó"
> > > > >
> > > > > Não sei como forçar o bash a trabalhar com UTF-8, nem se essa
> seria a
> > > > > melhor solução.
> > > > >
> > > > > Alguém tem alguma ideia?
> > > > >
> > > > > --
> > > > > []'s
> > > > > Alfredo Casanova
> > > > > Linux User #228230
> > > > > msn: address@hidden
> > > > > tel: +55 61 9655 9619
> > > > >
> > > > > [As partes desta mensagem que não continham texto foram removidas]
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Rafael Henrique da Silva Correia
> > > > http://abraseucodigo.com.br
> > > >
> > > > Bacharel em Ciência da Computação
> > > > Administrador de Sistemas Linux
> > > > Certificado pela LPIC - 101 http://www.lpi.org/>
> > > > Certificado Novell (CLA)
> http://www.novell.com/training/certinfo/cla/>
> > > >
> > > >
> > > > [As partes desta mensagem que não continham texto foram removidas]
> > > >
> > > >
> > > >
> > > > ------------------------------------
> > > >
> > > > ----------------------------------------------------------
> > > > 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
> > > >
> > > >
> > > >
> > >
> > > --
> > > []'s
> > > Alfredo Casanova
> > > Linux User #228230
> > > msn: address@hidden
> > > tel: +55 61 9655 9619
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
> --
> []'s
> Alfredo Casanova
> Linux User #228230
> msn: address@hidden
> tel: +55 61 9655 9619
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


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



reply via email to

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