拥有以下blastout.txt
:
我需要搜索包含Identities = [>=50]
和
Query=
示例输出(此处仅显示第一行):
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=
的一个条目,也会发生多条与该模式匹配的行。
非常感谢您对此实施的帮助!
答案 0 :(得分:2)
/Query/{q=$0} c...; /Identities/...{print q; c=5}
如果这不是你所需要的,那么编辑你的问题以包含简洁,可测试的样本输入和预期输出。不要问/希望我们去寻找其他网站的例子,因为这意味着你太懒了,不能提出你的问题的简明例子,并希望我们为你努力理解一些大的工作数据集。
拼写出来:
awk '/Query/{q=$0} c&&!--c; /Identities =/ && ($3+0)>=50 {print q; c=5}' blastout.txt
答案 1 :(得分:1)
好吧,我无法告诉你如何使用awk
,但我可以使用sed
来完成。
blastout.sed
脚本是:
# place 'Query=' line in hold space
/^Query=/h
# If we find an Identity line
/^ Identities = \([5-9][0-9]\|[1-9][0-9][0-9]\)/{
# Exchange pattern with hold space (the Query= line) and print
x
p
# Exchange pattern with hold space (the Identities = line) and print
x
p
# Get the fifth line and print
n
n
n
n
n
p
}
使用命令sed -n -f blastout.sed blastout.txt
运行它。
以下是一些结果:
$ sed -n -f blastout.sed blastout.txt | head -12
Query= HWI-ST863:386:C5Y8UACXX:3:1307:8061:42115 1:N:0:ACACGAAT
Identities = 100/100 (100%), Gaps = 0/100 (0%)
Sbjct 2030309 ATGACGCTCACCTTGGTGTCGATATCCTCACCTGCGGTGCCAATGCCGCTGCCCGCGGTC 2030250
Query= HWI-ST863:386:C5Y8UACXX:3:2209:19756:21341 1:N:0:ACACGAAT
Identities = 99/100 (99%), Gaps = 0/100 (0%)
Sbjct 2418742 CAGGCGTTCCGGCAGTTTGTGCTGGAAGAGGCCCGTGGCCTGGCGGAGCCTCTGCCGGCG 2418683
Query= HWI-ST863:386:C5Y8UACXX:3:1302:8580:7972 1:N:0:ACACGAAT
Identities = 100/100 (100%), Gaps = 0/100 (0%)
Sbjct 3178017 CCAGTTATGCTTGGGGCAGGTGAGCTTGTTGCCTTCCAGGGCGAGCTCGGGGATATCCGT 3178076
Query= HWI-ST863:386:C5Y8UACXX:3:1106:4759:9532 1:N:0:ACACGAAT
Identities = 100/100 (100%), Gaps = 0/100 (0%)
Sbjct 32627 CGAGGCCGCGGTTTTGGACCTGGACGAGGGGAGTCGGCGTGTGAGTCTTGCGACCCTGGA 32686
(更正为打印第五行。)