Ao lidar com vários arquivos, grep
imprime cada nome de arquivo antes das correspondências. Já que você não precisa procurar por uma expressão regular, você pode usar a opção -F
para procurar por uma string fixa (o que irá acelerar um pouco as coisas); a opção -r
informa grep
para agir recursivamente. A opção -r
é da versão GNU de grep
, então não funcionará em sistemas com outras versões do grep.
grep -r -F 'Taxonomy' /path/to/directory
Isso gerará linhas como:
sequence.php?ID=gi|90022703|ref|YP_528530.1|:Taxonomy: Bacteria; Proteobacteria; Gammaproteobacteria; Alteromonadales; Alteromonadaceae; Saccharophagus
Existem várias maneiras de massagear isso na saída desejada; um seria usar cut
:
grep -r -F 'Taxonomy' /path/to/directory | cut -d = -f 2 | cut -d : -f 1,3
Isso deve transformar essa linha em:
gi|90022703|ref|YP_528530.1|: Bacteria; Proteobacteria; Gammaproteobacteria; Alteromonadales; Alteromonadaceae; Saccharophagus
Isso não corresponde exatamente ao que você descreveu; você pode colocar | tr -d :
no final do pipe se realmente quiser se livrar do cólon. Finalmente, para redirecionar a saída para um arquivo:
grep -r -F 'Taxonomy' /path/to/directory | cut -d = -f 2 | cut -d : -f 1,3 > file.txt
Se você deseja anexar a um arquivo, em vez de sobrescrevê-lo, use >>
em vez de >
.