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

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

Re: Dicas sobre o delimitador de campos padrão do awk


From: voyeg3r
Subject: Re: Dicas sobre o delimitador de campos padrão do awk
Date: Thu, 31 May 2007 13:46:45 -0000
User-agent: eGroups-EW/0.82

--- Em address@hidden, "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]
>




reply via email to

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