Имея следующие blastout.txt
:
Мне нужно найти все строки, содержащие Identities = [>=50]
и
- напечатайте одну строку выше, содержащую
Query=
- напечатать 5-ю строку ниже
пример вывода (здесь показаны только первые строки):
Query= HWI-ST863:386:C5Y8UACXX:3:1307:8061:42115 1:N:0:ACACGAAT
Sbjct 2030309 ATGACGCTCACCTTGGTGTCGATATCCTCACCTGCGGTGCCAATGCCGCTGCCCGCGGTC 2030250
Query= HWI-ST863:386:C5Y8UACXX:3:2209:19756:21341 1:N:0:ACACGAAT
Sbjct 2418742 CAGGCGTTCCGGCAGTTTGTGCTGGAAGAGGCCCGTGGCCTGGCGGAGCCTCTGCCGGCG 2418683
Query= HWI-ST863:386:C5Y8UACXX:3:1302:8580:7972 1:N:0:ACACGAAT
Sbjct 3178017 CCAGTTATGCTTGGGGCAGGTGAGCTTGTTGCCTTCCAGGGCGAGCTCGGGGATATCCGT 3178076
Я решил 2.
:
awk 'c&&!--c;/Identities =/ && ($3+0)>=50 {c=5}' blastout.txt
это было возможно для меня, потому что структура файла всегда одинакова. Но для 1.
количество строк меняется, и также может случиться так, что для одной записи Query=
есть более одной строки, которые соответствуют шаблону.
Ваша помощь в реализации этого очень ценится!