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:22:53 -0200
User-agent: KMail/1.5

ooppss
>cat maiores
99   zz
56 jj
72 kk
76 uu
55 ##
57 &&
89 MM

On Thursday 02 December 2004 11:04, Miranda wrote:
> 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 ... ;-)
>
> ---------------------------------------------------------------------
> 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]