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

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

Re: [shell-script] Help


From: Humberto Pereira
Subject: Re: [shell-script] Help
Date: Mon, 24 Oct 2005 13:26:51 -0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050923 Debian/1.7.12-0ubuntu05.04

Caro vinicius,

        realmente isso eh muito simples, principalmente se vc usar awk. Veja o
script abaixo:


        awk ' NF == 9 {
                indice = $7 " " $8 " " $9;
                if(campo[indice] != 1) {
                        campo[indice] = 1;
                        print
                }
        } '


        NF diz p/ vc a quantidade de campos. Como vc disse q seu padrao era
sempre 9 campos, voce jah pega todos q nao tem esse tamanho e descarta.

        Eu um vetor p/ guardar o valor do setimo, oitavo e nono campos. awk usa
um conceito bem interessante de vetores, chamado vetor associativo. Voce
pode associar uma string ao indice do campo, e com isso, voce consegue
saber se aquele campo jah teve o valor anterior.

        Veja a saida:

[begnini 0 coke tmp]$ cat a.txt
PT11-C9-005-002-E05-CT.F        p2      (TA)11  22      492     513
PT11-C9-005-006-D03-CT.F        p3      (AGA)7  21      172     192
GGCAGAAAGCAGACGTTGA     AGCCCACCACGATGAGATAC    241
PT11-C9-005-006-E08-CT.F        p3      (AGA)7  21      128     148
CAGAAAGCGGACGTTGATTA    AGCCCACCACGATGAGATAC    239
PT11-C9-005-006-H11-CT.F        p3      (AAT)18 54      137     190
CGTTCAAGAAAGCATGTGGA    AAAAGGTGAAGGAGCAGCAA    183
PT11-C9-005-008-A06-CT.F        p3      (AAT)18 54      138     191
CGTTCAAGAAAGCATGTGGA    AAAAGGTGAAGGAGCAGCAA    183
[begnini 0 coke tmp]$ awk ' NF == 9 { indice = $7 " " $8 " " $9;
if(campo[indice] != 1) { campo[indice] = 1; print } } ' a.txt
PT11-C9-005-006-D03-CT.F        p3      (AGA)7  21      172     192
GGCAGAAAGCAGACGTTGA     AGCCCACCACGATGAGATAC    241
PT11-C9-005-006-E08-CT.F        p3      (AGA)7  21      128     148
CAGAAAGCGGACGTTGATTA    AGCCCACCACGATGAGATAC    239
PT11-C9-005-006-H11-CT.F        p3      (AAT)18 54      137     190
CGTTCAAGAAAGCATGTGGA    AAAAGGTGAAGGAGCAGCAA    183
[begnini 0 coke tmp]$


Dica: na proxima vez, use um subject menos generico, p/ q possamos ter
ideia do q vc quer, por ex., algo como "filtrando sequenciamento genetico".


[]s
Humberto Pereira.


vinicius wrote:
> Olá,
> 
> Precisava formatar um arquivo texto.
> 
> Este é o padrão:
> PT11-C9-005-002-E05-CT.F        p2      (TA)11  22      492     513
> PT11-C9-005-006-D03-CT.F        p3      (AGA)7  21      172     192     
> GGCAGAAAGCAGACGTTGA     AGCCCACCACGATGAGATAC    241
> PT11-C9-005-006-E08-CT.F        p3      (AGA)7  21      128     148     
> CAGAAAGCGGACGTTGATTA    AGCCCACCACGATGAGATAC    239
> PT11-C9-005-006-H11-CT.F        p3      (AAT)18 54      137     190     
> CGTTCAAGAAAGCATGTGGA    AAAAGGTGAAGGAGCAGCAA    183
> PT11-C9-005-008-A06-CT.F        p3      (AAT)18 54      138     191     
> CGTTCAAGAAAGCATGTGGA    AAAAGGTGAAGGAGCAGCAA    183
> 
> Este arquivo é composto por 9 campos, algumas vezes os campos  7, 8 e 9 
> estão vazios e essas linhas precisasm ser removidas. Outras vezes os 
> campos 7, 8 e 9 são idênticos, eu precisava manter apenas 1 deles (o 
> primeiro).
> Nessas duas situações eu gostaria de gerar outro arquivos com essas 
> linhas removidas. Me disserem que shell é bom para isso, alguém poderia 
> me ajudar.
> 
> Saída:
> PT11-C9-005-006-D03-CT.F        p3      (AGA)7  21      172     192     
> GGCAGAAAGCAGACGTTGA     AGCCCACCACGATGAGATAC    241
> PT11-C9-005-006-E08-CT.F        p3      (AGA)7  21      128     148     
> CAGAAAGCGGACGTTGATTA    AGCCCACCACGATGAGATAC    239
> PT11-C9-005-006-H11-CT.F        p3      (AAT)18 54      137     190     
> CGTTCAAGAAAGCATGTGGA    AAAAGGTGAAGGAGCAGCAA    183
> 
> 
> 
> ---------------------------------------------------------------------
> 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]