Solução awk curta:
awk 'NR==FNR{ a[$1]; next }/^>Feature/{ f=($2 in a) }f' id.txt input.txt
-
NR==FNR{ ... }- processando o primeiro arquivo de entrada (ou seja,id.txt):-
a[$1]- capturando cada "scaffold" id no arraya -
next- pula para o próximo registro
-
-
/^>Feature/- ao encontrar linha padrão começando com>Feature(ao processar o segundo arquivo de entradainput.txt):-
f=($2 in a)- definefflag atividade dependendo da ocorrência atual do "scaffold" id (aparece como o segundo campo$2) na matriz de idsa -
f- dependendo da atividade desse sinalizador, qualquer bloco será ou não processado
-
A saída:
>Feature scaffold1
1 100 g
101 200 g
201 300 g
500 500 r
900 1000 r
>Feature scaffold3
10 500 g
100 200 r
>Feature scaffold4
10 300 g
500 600 r