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

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

Re: [shell-script] Re: Dicas sobre o delimitador de campos padrão do awk


From: Flavio Junior
Subject: Re: [shell-script] Re: Dicas sobre o delimitador de campos padrão do awk
Date: Thu, 31 May 2007 12:32:48 -0300

Boa Tiago.. nunca havia pensado nesse tipo de solução ;) ...

Voy3ur sei lah, a ideia era falar somente sobre o awk por isso a galera não
postou milhares de soluções externas a ele... mas claro, sempre tem diversas
formas de se fazer a mesma coisa em Shell, inclusive em shell puro (built-in
functions), que normalmente tem perfomance melhor...

Agora um detalhe aos Admins da lista: perceberam que alaguns e-mails "bugam"
o corpo do e-mail e ao inves de ocultar o @.... o convertem para %40 e
mantem o dominio? Bah.. isso parece ser o motivo dos meus spam's estarem
aumentando consideravelmente, visto que o conteudo das mensagens esta aberto
a toda rede no site do yahoogrupos...

PS: Eu sei q poderia mandar em reservado, mas é do interesse de todos mesmo
não sendo sobre shell script.


Flávio do Carmo Junior

On 5/31/07, voyeg3r <address@hidden> wrote:
>
>   --- Em address@hidden<shell-script%40yahoogrupos.com.br>,
> "Tiago Barcellos Peczenyj"
> <tiago.peczenyj@...> escreveu
> >
> > Isso que dá ler com pressa....
> >
> > Pois bem, isso seria algo interessante para se implementar...
> >
> > Quando eu preciso fazer algo como
> >
> > awk '{print $2 até $NF}'
> >
> > eu faço
> >
> > awk '{$1="" ; print $0}'
> >
> > é gambiarra ? mais ou menos, mas concordo que, se tivesse algo como
> >
> > awk '{print ${2..NF} }'
> >
> > ficaria mais legivel (ou não)
>
> Em todo caso sua gambiarra é muito criativa,
> lembrando que o Júlio César Neves já postou boas dicas
> sobre o cut. O uso do awk neste caso só se justificaria se
> tivéssemos que manipular o conteúdo dos campos
>
> No caso abaixo aumento o valor do campo 2 em 10%
>
> echo 1 2 3 4 | awk '{print $2*1.1}'
>
> >
> > Abraços e desculpe pela confusão.
> > On 5/30/07, Flavio Junior <billpp@...> wrote:
> > >
> > > hm... não era essa a intenção Tiago..
> > >
> > > A intenção é dizer do campo 3 até o ULTIMO, sem ter q especificar os
> > > intervalos ...
> > >
> > > Veja:
> > > Codigo - seilah - Descricao
> > > 1 - blah blha - eu posso escrever N palavras aqui, visse?
> > >
> > > Esquece a porcaria do "-" separndo os campos, é só pra entender,
> imagina q
> > > eu quero com o AWK imprimir do segundo campo (blah) até o ultimo...
> > >
> > > ou seja:
> > > awk '{print $2 até $NF}'
> > >
> > > Entende ?
> > >
> > > Flavio do Carmo Junior
> > >
> > > On 5/30/07, Tiago Barcellos Peczenyj
> <tiago.peczenyj@...<tiago.peczenyj%40gmail.com>>
> > > wrote:
> > > >
> > > > Claro
> > > >
> > > > $ seq 30 | tr '\n' ' ' | awk '{print $4}'
> > > > 4
> > > > $ seq 30 | tr '\n' ' ' | awk '{print $(5-1)}'
> > > > 4
> > > >
> > > > Simples, não ?
> > > >
> > > > On 5/30/07, Flavio Junior <billpp@...
> <billpp%40gmail.com><billpp%40gmail.com>> wrote:
> > > > >
> > > > > Já que se prontificou a postar uma "dica" sobre o awk ...
> > > > >
> > > > > Como fazer no awk referencia ao resto dos campos ?
> > > > > Exemplo:
> > > > > awk '{print $1,$3,$4,$5,$6,$7,$8,$9...}'
> > > > > Substituir isso por, algo como:
> > > > > awk '{print $1,$3-9}'
> > > > >
> > > > > Tem como ser feito ?
> > > > >
> > > > > Flavio do Carmo Junior
> > > > >
> > > > > On 5/30/07, voyeg3r <voyeg3r@...
>
> <voyeg3r%40yahoo.com.br><voyeg3r%40yahoo.
> > > com.br><voyeg3r%40yahoo.
> > > > com.br>> wrote:
> > > > > >
> > > > > > Para quem conhece o awk pule esta definição dada pelo zago:
> > > > > >
> > > > > > O que significa awk?
> > > > > >
> > > > > > Awk é uma linguagem com muitas funcionalidades, excelente na
> > > > > > manipulação de strings e arquivo texto, muito útil pra usar
> na linha
> > > > > > de comando, em scripts, em combinação com outros aplicativos
> como
> > > cat,
> > > > > > ls e etc...
> > > > > >
> > > > > > ===== A dica =========
> > > > > > O delimitador de campos padrão do awk é o espaço, e portanto se
> > > quizer
> > > > > > que ele imprima a saída também com espaços basta colocar uma
> vírgula
> > > > > > entre os campos, no exemplo abaixo retiro o espaço existente
> entre
> > > os
> > > > > > campos 2 e 3
> > > > > >
> > > > > > echo "um dois tres quatro" | awk '{print $1,$2$3,$4}'
> > > > > >
> > > > > > E para deixar o pessoal com agua na boca veja um exemplo em que
> > > troco
> > > > > > os campos 4 e 1 de lugar
> > > > > >
> > > > > > echo "um dois tres quatro" | awk '{print $4,$2,$3,$1}'
> > > > > >
> > > > > > Ou ainda pego o meu endereço IP
> > > > > >
> > > > > > ifconfig eth0 | awk '/inet end/ {print $3}'
> > > > > >
> > > > > > Referências:
> > > > > > * http://www.zago.eti.br/script/awk.html
> > > > > > * http://sergioaraujo.pbwiki.com/awk
> > > > > >
> > > > > > " °v°
> > > > > > " /(_)\
> > > > > > " ^ ^
> > > > > >
> > > > > > :wq
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > > [As partes desta mensagem que não continham texto foram removidas]
> > > > >
> > > > >
> > > > >
> > > >
> > > > --
> > > > Tiago B Peczenyj
> > > > Linux User #405772
> > > >
> > > > # cd /pub
> > > > # more beer
> > > >
> > > > [As partes desta mensagem que não continham texto foram removidas]
> > > >
> > > >
> > > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> >
> >
> >
> > --
> > Tiago B Peczenyj
> > Linux User #405772
> >
> > # cd /pub
> > # more beer
> >
> >
> > [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]