Como posso imprimir a primeira coluna em um arquivo de texto com cada linha tabulada?

0

Este é o texto que tem no arquivo:

                   1NPD:A|PDBID|CHAIN|SEQUENCE  MDVTAKYELIGLMAYPIRHSLSPEMQNKALEKAGLPFTYMAFEVDNDSFPGAIEGLKALKMRGTGVSMPNKQLACEYV
                   1NPD:B|PDBID|CHAIN|SEQUENCE  MDVTAKYELIGLMAYPIRHSLSPEMQNKALEKAGLPFTYMAFEVDNDSFPGAIEGLKALKMRGTGVSMPNKQLACEYV
                   1NPY:A|PDBID|CHAIN|SEQUENCE  MINKDTQLCMSLSGRPSNFGTTFHNYLYDKLGLNFIYKAFTTQDIEHAIKGVRALGIRGCAVSMPFKETCMPFLDEIH
                   1NPY:B|PDBID|CHAIN|SEQUENCE  MINKDTQLCMSLSGRPSNFGTTFHNYLYDKLGLNFIYKAFTTQDIEHAIKGVRALGIRGCAVSMPFKETCMPFLDEIH                       
                   1NPY:C|PDBID|CHAIN|SEQUENCE  MINKDTQLCMSLSGRPSNFGTTFHNYLYDKLGLNFIYKAFTTQDIEHAIKGVRALGIRGCAVSMPFKETCMPFLDEIH                       
                   1NPY:D|PDBID|CHAIN|SEQUENCE  MINKDTQLCMSLSGRPSNFGTTFHNYLYDKLGLNFIYKAFTTQDIEHAIKGVRALGIRGCAVSMPFKETCMPFLDEIH                       
                   1NVT:A|PDBID|CHAIN|SEQUENCE  GPLGSMINAKTKVIGLIGHPVEHSFSPIMHNAAFKDKGLNYVYVAFDVLPENLKYVIDGAKALGIVGFNVTIPHKIEI                       
                   1NVT:B|PDBID|CHAIN|SEQUENCE  GPLGSMINAKTKVIGLIGHPVEHSFSPIMHNAAFKDKGLNYVYVAFDVLPENLKYVIDGAKALGIVGFNVTIPHKIEI

Eu quero remover os espaços que ele tem no começo, acho que há uma tabulação também, e eu só quero manter o ID que é 1NPD, 1NPY, etc. Não importa se é A , B ou C, eu só quero uma identificação de cada seqüência.

É assim que eu gostaria que o arquivo aparecesse.

1NPD
1NPY
1NVT
    
por user189335 11.09.2016 / 04:35

4 respostas

1

Supondo que você tenha o texto que deseja processar no arquivo in.file e deseja gravar em um arquivo out.file , é possível usar:

tr -d ' ' < in.file | cut -d':' -f1 | sort -u > out.file

O primeiro, remove os espaços de in.file: tr -d ' ' < in.file

O segundo, corta o texto em campos usando ':' como delimitador e seleciona apenas o primeiro campo: cut -d':' -f1

A última, classifica os resultados, seleciona os únicos e grava em out.file: sort -u > out.file

    
por 11.09.2016 / 07:04
0

Basta fazer isso com os seguintes comandos do shell: %código% Remova as guias e o espaço no início, selecione a primeira coluna por awk e, em seguida, mescle os mesmos IDs, usando tr para converter várias linhas em uma linha.

    
por 11.09.2016 / 05:16
0

em um único comando awk

 awk '{print substr($1,1,index($1,":")-1)}' in.file | sort -u

onde

  • o awk cortará com espaço e tabulação
  • index($1,":") fetch : position
  • substr( ) substring de extração
  • sort -u garantirá a exclusividade
por 11.09.2016 / 11:05
0

Com apenas awk

awk -F: '{sub("[ \t]+","",$1)}; !seen[$1]++ {print $1}' textfile
  • divida o texto em : -delimited fields
  • remove o espaço em branco inicial do primeiro campo $1
  • imprima o $1 aparado somente na primeira vez em que você o visualizar
por 11.09.2016 / 15:12