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

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

Re: [shell-script] Subs. for pelo awk ...


From: Miranda
Subject: Re: [shell-script] Subs. for pelo awk ...
Date: Thu, 2 Dec 2004 11:04:56 -0200
User-agent: KMail/1.5

você pode transformar suas condições
em um if dentro do awk e redirecionar a saida 
dentro do awk
vou colocar um exemplo mais facil
aqui
para melhor entendimento
já que suas condições estão um pouco mais
complexas

>cat nu
10   aa
99   zz
34 tt
56 jj
72 kk
76 uu
21 ww
11 jj
10 [[
09 33
55 ##
34  %%
57 &&
89 MM
23 <<
21 ;;

> awk '{if ($1 < 51 ) print $0 >"menores";else print $0 > "maiores"}' nu

>cat menores
10   aa
34 tt
21 ww
11 jj
10 [[
09 33
34  %%
23 <<
21 ;;

>cat menores
10   aa
34 tt
21 ww
11 jj
10 [[
09 33
34  %%
23 <<
21 ;;

Só mais um detalhe : NR representa o numero de registros ( ou seja , linhas )
lidos até entâo


On Monday 29 November 2004 22:22, Marcelo G. Dias wrote:
> Boa noite all ...
>
> Tenho uma duvida para reduzir um script que tenho, atualmente utilizo o
> comando FOR da seguinte forma ...
>
> #Verifica saldo de lançamentos fechados
> SALDO="0" ; CONTA="0"
> for i in `awk -F"::" '{print $8":"$16}' ../tmp-local/"$CHAVE"`
> do
>       TIPO=`echo "$i" | cut -f1 -d":"`
>       VLR=`echo "$i" | cut -f2 -d":"`
>       [ "$TIPO" == "01" ] && VLR=`echo "scale=2; $VLR * -1" | bc`
>       SALDO=`echo "scale=2; $VLR + $SALDO" | bc`
>       CONTA=`expr "$CONTA" + 1`
> done
>
> O campo $8 (01 para débito e 02 para crédito) informa o tipo de lançamento
> O campo $16 informa o valor
>
> Sei que o NR indica a quantidade de parametros que passa pelo AWK.
> Ai só precisaria de que o AWK debitasse ou creditasse a variável $16 de
> acordo com a variável $8 ... e ai pegou, realmente não sei como fazer,
> estou buscando pelo google, mas se alguém poder me ajudar ... :-(
>
> Ps.: Ao especificar a NR preciso que o campo apresente 5 digitos
> preenchidos com "0" (ZERO) á esquerda como em "00001", atualmente utilizo o
> comando:
>
> LAN=`expr "$SOMA" + 1`
> LAN=$(printf "%05d" $LAN)
>
> E no segundo script tenho o seguinte trecho ...
>
> #Efeitva fechamento do período
> DATA=`date "+%Y%m%d"`
> BUSCA="USUARIO"
>
> awk -F"::" '{DATA=$5$6$7} DATA < "'$DATA'" && $11 == "'$BUSCA'" && $9 ==
> "02" && $10 == "02" {print DATA":"$0}' ../dados/lansamentos/abt/"$CHAVE" |
> sort -t":" -k1 | cut -f2- -d":" > ../tmp-local/"$CHAVE"
>
> O comando faz uma parte só do que preciso ... ele esta direcionando as
> linhas que atendem o padrão para um arquivo, só que gostaria que ele
> direcionasse o que não atende o padrão para outro arquivo, é possível ????
> :-(
>
> Desde já agradeço a atenção ... ;-)



reply via email to

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