Eu tenho um arquivo que se parece com isso
AAA_21 PF13304.1 x_00004
AAA_22 PF13401.1 x_00004
SMC_N PF02463.14 x_00004
AAA_29 PF13555.1 x_00004
DUF258 PF03193.11 x_00005
AAA_15 PF13175.1 x_00005
AAA_21 PF13304.1 x_00005
AAA_22 PF13401.1 x_00005
SMC_N PF02463.14 x_00005
AAA_15 PF13175.1 x_00006
AAA_21 PF13304.1 x_00006
AAA_22 PF13401.1 x_00007
SMC_N PF02463.14 x_00007
Agora, para cada bloco de linhas que têm a mesma sequência na coluna 3 (por exemplo, x_00004), quero grep
apenas as linhas que contêm strings específicas, se elas estiverem presentes juntas no bloco.
Então, eu sei que posso usar
%código%
Mas não consigo encontrar uma maneira de aplicar a primeira ação. Eu acho que grep -f <file containing string> <file to scan>
vai me ajudar aqui, mas eu não sei como.
Eu gostaria de ter algo como:
AAA_21 PF13304.1 x_00004
AAA_22 PF13401.1 x_00004
AAA_21 PF13304.1 x_00005
AAA_22 PF13401.1 x_00005
Então, basicamente, as linhas contendo awk
ou PF13304.1
somente serão exibidas se elas estiverem compartilhando o campo 3.
Eu uso PF13401.1
e PF13304.1
como exemplo, porque às vezes eu procuro a presença de 3 strings no bloco.
Um problema é que a string que estou procurando nem sempre é consecutiva no arquivo que eu quero verificar.
Todas as strings que eu quero PF13401.1
também são reportadas em um arquivo txt. Eu posso organizá-los como quero corresponder ao comando grep
.
Em vez disso, a linha que contém
AAA_21 PF13304.1 x_00006
AAA_22 PF13401.1 x_00007
Não deve ser incluído porque as strings que eu quero grep
não compartilham o campo 3, o que significa que elas não estão presentes nos subgrupos grep
ou x_00006
Então, do ponto de vista lógico, eu quero
- abra o arquivo
- divida as linhas em grupos de acordo com o campo 3, crie grupos que tenham a mesma string no campo 3
- neste subgrupo
x_00007
as strings que estou procurando somente se elas estiverem presentes em cada bloco