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

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

Re: [shell-script] Duvida


From: SleepWalker
Subject: Re: [shell-script] Duvida
Date: Fri, 26 Nov 2004 09:11:12 -0200

Bom... mais uma vez obrigado pela ajuda!!

Acho melhor eu comecar arranjar algumas desculpas entao para explicar para 
minha futura esposa pq estou no computador as 23:40 e noa na cama hehehehheheeh

Falow
[]´s

MrBiTs wrote:

> > Alguem ai me diz o significado desses comando:
> > "diff -y"
> > "--suppress-common-lines"
> > " tr -d '\011' tr -d ' ' "
> > Eu perguntei pra pessoa que me ajudou nesse script mas acho q ela
> > noa ta online no momento... se alguem ai on line puder me dizer...
> > agradeço
>
> Pois é... depois que vc casa, fica meio complicado explicar para a esposa por 
> que voce esta no computador e nao na cama às 23:48. É o preço que se paga por 
> nao ser onipresente nem ter um motor de dobra para andar em Warp 10.
>
> Vamos la: extraidos da fonte:
>
> man diff nos diz que:
>
>        diff - compara arquivos linha a linha
>
> -y  --side-by-side
>               Saida em duas colunas
>
> --suppress-common-lines
>               Nao mostra linhas em comum
>
> Para uma melhor compreensao, desmembramos o comando: Entao, la naquele seu 
> problema original, temos:
>
> $ diff -y --suppress-common-lines frutas1.txt frutas2.txt
> carambola                                                     | cagambola
> cupuacu                                                       | cupuassu
> manga                                                         | mango
>
> O diff comparou os dois arquivos, o -y formatou a saida em duas colunas e o 
> --suppress-common-lines mostrou somente onde os arquivos estao diferentes. O 
> problema dessa saida é que ela esta formatada com tabs e espacos.
>
> Entao vem a segunda parte do comando
>
> tr -d '\011' | tr -d ' '
>
> De novo, direto da fonte: man tr nos diz que:
>
> tr - traduz ou apaga caracteres
>
> -d, --delete
>               apaga caracteres, sem traduzi-los
>
> entao, tr -d '\011' apaga o caracter octal TAB, que é o caracter gerado pelo 
> pressionamento da tecla TAB e tr -d ' ' apaga os espacos.
>
> Voce sabe que o | (pipe) "canaliza" a saida de um comando para o outro, certo 
> ?
> Entao, se eu faco
>
> diff -y --suppress-common-lines frutas1.txt frutas2.txt | tr -d '\011' | tr 
> -d ' '
>
> estou dizendo ao sistema para comparar frutas1 e frutas2, mostrando somente 
> os "registros dissonantes" ( Minority Report, alguem viu ??? ) em duas 
> colunas. Pegue essa saida e  apague dela os TAB (\011) . Pegue essa segunda 
> saida e apague dela os espaços. Dai vc tem  o resultado:
>
> carambola|cagambola
> cupuacu|cupuassu
> manga|mango
>
> Temos entao um caso tipico de registros delimitados. O nosso delimitador ai, 
> chamado em alguns lugares de FS ( Field Separator ), é o |.
>
> Como tenho 3 registros, esta ótimo para gerar um laco rapido, ler registro a 
> registro e formatar essa saida do jeito que eu quero. Entao vem o laco for do 
> script, atribuindo a uma variavel a linha carambola|cagambola. Vamos chama-la 
> de $linha
>
> echo $linha vai me mostrar exatamente o carambola|cagambola. Sabendo que o | 
> ( comando de shell; nao confunda com o seu FS ) canaliza os resultados de um 
> comando para outro, temos:
>
> echo $linha | cut -d "|" -f 1
>
> Estamos dizendo: ecoe, imprima o conteudo da variavel linha 
> (carambola|cagambola) e corte-o pelo |, mostrando somente o campo 1, que me 
> da carambola. Similarmente,
>
> echo $linha | cut -d "|" -f 2 me devolve a palavra cagambola.
>
> Acho que deu uma luz, nao foi ?
>
> Dica de sucesso: sabendo agora que o | canaliza resultados, repita os 
> comandos do script EM SEPARADO, para voce visualizar a saida e o que esta 
> acontecendo durante o processamento.  Repita isso à exaustao, mas nao deixe 
> de entender. E aproveite para ler as man pages do diff, do tr e de todos os 
> comandos existentes em /bin, /sbin, /usr/bin e /usr/sbin e, eventualmente, os 
> existentes em /usr/local/bin e /usr/local/sbin ( se existirem ). Man pages 
> podem vir a ser suas melhores amigas.
>
> Depois de compreendida essa estrutura mais simplista, de comandos em 
> separado, voce pode passar para o Lado Negro da Força, e fazer as magias 
> negras que bruxos como o Julio e o Aurélio fazem.
>
> Um abraço
>
> [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
> ---------------------------------------------------------------------
>
> Links do Yahoo! Grupos
>
>
>
>
>



reply via email to

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