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)
- definef
flag 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