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

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

Re: teste condicional em awk


From: merthobu
Subject: Re: teste condicional em awk
Date: Tue, 15 Jan 2008 19:00:30 -0000
User-agent: eGroups-EW/0.82

--- Em address@hidden, miranda <miranda@...> escreveu
Sim exatamente! A primeira linha é uma string, ou seja, é um label 
para a coluna. A questão é que durante o loop ele fica alterando o
rotulo devido a um outro fator que não posso ordenar. Tenho que
ordenar na saida do programa. Acho que não estou sabendo usar direito
a sintaxe do condicional (if - else ou elif) no awk para ordenar a 
saida.

OBS.: Tinha colocado a sintaxe errada na saida do segundo script já
que são 7 colunas e não nove ($7 ao inves do $9).
Agradeço já de antemão ajuda na construção correta desse condicional.
Abração.
>
> Você diz que na primeira linha do arquivo pode vir assim
> A1 A1 A1 A1 A1 E E  ou assim
> A1 A1 A1 A1 E A1 E   ??
> 
> On Tue, 2008-01-15 at 17:48 +0000, merthobu wrote:
> > Olá Pessoal,
> > Estou precisando de uma ajudinha com um teste condicional em uma parte
> > de meu script com o awk.
> > Em um trecho de duas saidas de arquivos tenho a seguinte formatação:
> > saida1: 
> > A1 A1 A1 A1 A1 E E
> > 0.000929 0.973412 -0.029823 0.005237 0.015094 0.000000 0.000000
> > 0.001714 -0.009132 0.255561 -0.335380 0.337923 0.000000 0.000000
> > 0.000035 0.044019 0.070011 -0.103921 0.076606 0.000000 0.000000
> > 0.003394 -0.004073 0.043863 -0.124397 0.473528 0.000000 0.000000
> > 0.000000 0.000000 0.000000 0.000000 0.000000 0.190161 0.304455
> > -0.000228 -0.002904 -0.127466 0.019194 0.263433 0.000000 0.000000
> > 0.000000 0.000000 0.000000 0.000000 0.000000 0.250651 0.424125
> > ....................................................................
> > etc....
> > __________________________________________________________
> > saida2:
> > A1 A1 A1 A1 E A1 E
> > 0.001239 0.973736 -0.049283 0.012921 0.000000 0.018807 0.000000
> > 0.001899 -0.006501 0.264439 -0.233010 0.000000 0.384591 0.000000
> > 0.000599 0.045845 0.071906 -0.075298 0.000000 0.085593 0.000000
> > 0.004548 -0.002448 0.040435 -0.027492 0.000000 0.530845 0.000000
> > 0.000000 0.000000 0.000000 0.000000 0.209819 0.000000 0.282460
> > -0.000445 -0.003986 -0.167363 0.064887 0.000000 0.274851 0.000000
> > 0.000000 0.000000 0.000000 0.000000 0.252410 0.000000 0.419213
> >
........................................................................
> > etc...
> > __________________________________________________________
> > Gostaria de trocar as colunas $5 pela $6 toda vez que ocorrer que o A1
> > fica na coluna 6 ($6) e o E fique na coluna 5 ($5). Como estou rodando
> > um laço para muitos arquivos seria legal se o awk checasse essa
> > condição e colando nessa ordem:
> > A1 A1 A1 A1 A1 E E
> > 
> > Tentei usando duas sintaxes conforme abaixo, mas ambas só funcionam em
> > um caso, falhando a outra condição.
> > ----------------------------------------------------------
> > {
> > if ($5 ~ "1E"){
> > tmp1 = $6; tmp2 = $5; $5 = $6; tmp1 = $5;
> > print $1,$2,$3,$4,$5,tmp2,$7
> > }
> > elif ($5 ~ "A1")
> > print $1,$2,$3,$4,$5,$6,$7
> > }
> > ----------------------------------------------------------
> > Esta condição trabalha bem na saida1 mas falha na saida2....por outro
> > lado, esta tentativa:
> > ----------------------------------------------------------
> > {
> > if ($5 ~ /1E/)
> > tmp1 = $7; tmp2 = $5; $5 = $7; tmp1 = $5;
> > print $1,$2,$3,$4,$5,tmp2,$7
> > if ($5 ~ /A1/)
> > print $1,$2,$3,$4,$5,$6,$7
> > }
> > ----------------------------------------------------------
> > Falha na saida1 mas funciona na saida2.
> > Quem se arrisca a dar um pitaco nesse condicional do awk.
> > Um ano prospero a todos e seus familiares, forte abraço.
> > 
> > Humberto
> > 
> > 
> > 
> > 
> >
>




reply via email to

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