br comando e formatação de uma linha de ajuda

3

Eu preciso transformar esses cabeçalhos:

'>>tr|G1PEZ0|G1PEZ0_MYOLU Uncharacterized protein (Fragment) OS=Myotis lucifugus GN=SNCG PE=4 SV=1

apenas isso:

'>G1PEZ0_MYOLU 

Por favor, ignore o apóstrofo no começo.

    
por derb2k 23.02.2015 / 18:45

3 respostas

0

Que tal isso:

str='>>tr|G1PEZ0|G1PEZ0_MYOLU Uncharacterized protein (Fragment) OS=Myotis lucifugus GN=SNCG PE=4 SV=1'
echo "$str" | sed -e 's/ .*//' -e 's/.*|//' -e 's/^/>/'

Que usa 3 substituições separadas - exclua tudo do primeiro espaço na linha, exclua tudo até o último | na linha e coloque um > de volta como o primeiro caractere da linha.

    
por 23.02.2015 / 18:57
0

Isso também pode ser feito usando cut :

input=">>tr|G1PEZ0|G1PEZ0_MYOLU Uncharacterized protein (Fragment) OS=Myotis lucifugus GN=SNCG PE=4 SV=1"
echo "$input" | cut -d" " -f1 | cut -d"|" -f3 | sed "s/^/>/"
    
por 23.02.2015 / 19:05
0

Com tr e cut :

tr ' |' '>>' <input |cut -d\> -f1,6

... que tr forma todos os espaços e | pipes em > right-angles, em seguida cut s entre os > -d elimited% elimited -f ields somente o primeiro e o sexto.

Com sed ...

sed -n 'y/ /\n/;s/.*|/>/;P' <input

Que também y/// transforma todos os espaços em \n ewlines, então s/// ubstitui a string mais longa e mais à esquerda que pode terminar com um | pipe em um único > then P apenas até o primeiro \n ewline no espaço padrão.

    
por 23.02.2015 / 23:13