Eu tenho um arquivo como este (cinco colunas separadas por tabulações)
head allKO.txt
Metabolism Carbohydrate metabolism Glycolisis K07448
Metabolism Protein metabolism protesome K02217
e quero procurar o padrão (string) na coluna 5 no arquivo KEGG.annotations
e, se for encontrado, quero imprimir em outro arquivo a linha de KEGG.annotations
em que o padrão foi encontrado e todas as colunas de allKO.txt
.
O arquivo em que estou procurando o padrão é:
head KEGG.annotations
>aai:AARI_24510 proP; proline/betaine transporter; K03762 MFS transporter, MHS family, proline/betaine transporter
>aai:AARI_26600 ferritin-like protein; K02217 ferritin [EC:1.16.3.1]
>aai:AARI_28260 hypothetical protein
>aai:AARI_29060 ABC drug resistance transporter, inner membrane subunit; K09686 antibiotic transport system permease protein
>aai:AARI_29070 ABC drug resistance transporter, ATP-binding subunit (EC:3.6.3.-); K09687 antibiotic transport system ATP-binding protein
>aai:AARI_29650 hypothetical protein
>aai:AARI_32480 iron-siderophore ABC transporter ATP-binding subunit (EC:3.6.3.-); K02013 iron complex transport system ATP-binding protein [EC:3.6.3.34]
>aai:AARI_33320 mrr; restriction system protein Mrr; K07448 restriction system protein
Eu quero algo assim:
Metabolism Carbohydrate metabolism Glycolisis K07448 >aai:AARI_33320 mrr; restriction system protein Mrr; K07448 restriction system
Metabolism Protein metabolism proteasome K02217 >aai:AARI_26600 ferritin-like protein; K02217 ferritin [EC:1.16.3.1]
Observe que o texto >aai:AARI_33320 mrr; restriction …
que é anexado à primeira linha é a oitava linha de KEGG.annotations
, que é o que contém K07448
(que é o campo ID (quinto campo) da primeira linha de allKO.txt
).
Como posso modificar este código para usar meu arquivo padrão? Isso funciona com um arquivo padrão com apenas uma coluna contendo o padrão específico a ser encontrado.
while read pat; do
grep "$pat" --label="$pat" -H < KEGG.annotations;
done < allKO.txt > test1