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

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

Re: [shell-script] indicar campo via script


From: Wagner Melcíades
Subject: Re: [shell-script] indicar campo via script
Date: Thu, 27 Mar 2003 12:27:44 -0300

Ola Henrique e Fabio, obrigado pela ajuda!

So um esclarecimento: as sugestoes dadas fazem o awk imprimir o valor da variavel 'var' e eu gostaria que 'var' indicasse ao awk qual o 'campo' a ser impresso. Para isso bastou eu nao especificar 'END' da solucao dada pelo Henrique e fazer 'var1' indicar o campo, assim:

var=3
awk -v var1=$var '{print $var1}' arquivo-ori > arquivo-new

Obrigado!
Henrique te escrevo em off.

Wagner Melciades.


From: Henrique Limaverde Cabral de Lima <address@hidden>
Reply-To: address@hidden
To: address@hidden
Subject: Re: [shell-script] indicar campo via script
Date: Thu, 27 Mar 2003 11:53:59 -0300 (BRT)

Oi Vagner,
   Ha' quanto tempo, nao? Como andam as coisas?
   Vou ajudar voce nessa...

> mas o problema eh que tenho um numero variavel de espacos entre os meus
> campos, entao nao sei fazer com o cut. A solucao awk funcionaria se eu
> soubesse como passar uma variavel do meu script para o awk. Seria algo como:
>
> var=3
> awk '{ printf $var}' arquivo-ori > arquivo-new --> claro que nao funciona

Ha´ mais de uma maneira de fazer isso:
1a: passar um valor usando a opcao -F do awk:

awk -v var1=$var 'END {print var1}' .bash_profile

imprime o valor da varialvel var

ou voce pode concatenar as strings com a variavel na linha de comando

awk 'END{ print "'$var'"}' .bash_profile

a primeira solucao eh mais elegante e a segunda pode dar muito trabalho e
dor de cabeca se o script nao for pequeno.
A sugestao do Fabio tambem funciona, mas pode levar a problemas como os da
segunda sugestao (talvez nao tao serios quanto a minha segunda opcao).

Em resumo, use o -v variavel=valor do awk :)


    Henrique Lima


_________________________________________________________________
MSN Hotmail, o maior webmail do Brasil.  http://www.hotmail.com



reply via email to

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