grep:将阴性匹配与After相结合(搜索不包含单词片段的蛋白质序列)
我有一个fasta序列,我想过滤掉所有在标题中有单词片段的序列 我想我可以使用grep:将阴性匹配与After相结合(搜索不包含单词片段的蛋白质序列),grep,fasta,Grep,Fasta,我有一个fasta序列,我想过滤掉所有在标题中有单词片段的序列 我想我可以使用grep和-a1(因为蛋白质序列总是在一行上)和-I(以防片段没有大写)并将其与-v一起使用,但不知何故,反转结果并不能如预期的那样起作用 >tr|A0A534K2W8|A0A534K2W8_9EURY Epoxide hydrolase 1 (Fragment) OS=Euryarchaeota archaeon OX=2026739 GN=E6K10_05355 PE=4 SV=1 MSNTPDFNRR..
grep
和-a1
(因为蛋白质序列总是在一行上)和-I
(以防片段没有大写)并将其与-v
一起使用,但不知何故,反转结果并不能如预期的那样起作用
>tr|A0A534K2W8|A0A534K2W8_9EURY Epoxide hydrolase 1 (Fragment) OS=Euryarchaeota archaeon OX=2026739 GN=E6K10_05355 PE=4 SV=1
MSNTPDFNRR...
>tr|A0A4S3JUN3|A0A4S3JUN3_9EURO AB hydrolase-1 domain-containing protein OS=Aspergillus tanneri OX=1220188 GN=ATNIH1004_010243 PE=4 SV=1
MRDKYTPATL...
>tr|B1AQP8|B1AQP8_HUMAN Epoxide hydrolase 1 (Fragment) OS=Homo sapiens OX=9606 GN=EPHX1 PE=1 SV=1
MWLEILLTSV...
>tr|B1AQP9|B1AQP9_HUMAN Epoxide hydrolase 1 (Fragment) OS=Homo sapiens OX=9606 GN=EPHX1 PE=1 SV=1
MWLEILLTSV...
>tr|Q6FGZ3|Q6FGZ3_HUMAN EPHX1 protein (Fragment) OS=Homo sapiens OX=9606 GN=EPHX1 PE=2 SV=1
MWLEILLTSV...
>tr|A0A2G8L4U1|A0A2G8L4U1_STIJA Putative epoxide hydrolase 1-like OS=Stichopus japonicus OX=307972 GN=BSL78_07808 PE=4 SV=1
MVHGWPGSFY...
如果我想保留带有片段的序列,它可以正常工作
grep-i“片段”-a1 test.fasta
>tr | A0A534K2W8 | A0A534K2W8 Eury环氧化物水解酶1(片段)OS=Euryarchaeota Archeon OX=2026739 GN=E6K10_05355 PE=4 SV=1
MSNTPDFNRR。。。
--
>tr | B1AQP8 | B1AQP8 |人类环氧化物水解酶1(片段)OS=智人OX=9606 GN=EPHX1 PE=1 SV=1
MWLEILLTSV。。。
>tr | B1AQP9 | B1AQP9 |人环氧化物水解酶1(片段)OS=智人OX=9606 GN=EPHX1 PE=1 SV=1
MWLEILLTSV。。。
>tr | Q6FGZ3 | Q6FGZ3 |人类EPHX1蛋白(片段)OS=智人OX=9606 GN=EPHX1 PE=2 SV=1
MWLEILLTSV。。。
但如果我想逆转比赛,这就是结果
grep-i“片段”-1-v测试
MSNTPDFNRR。。。
>tr | A0A4S3JUN3 | A0A4S3JUN3 | 9EURO AB水解酶-1结构域含蛋白质OS=单宁曲霉OX=1220188 GN=ATNIH1004|010243 PE=4 SV=1
MRDKYTPATL。。。
>tr | B1AQP8 | B1AQP8 |人类环氧化物水解酶1(片段)OS=智人OX=9606 GN=EPHX1 PE=1 SV=1
MWLEILLTSV。。。
>tr | B1AQP9 | B1AQP9 |人环氧化物水解酶1(片段)OS=智人OX=9606 GN=EPHX1 PE=1 SV=1
MWLEILLTSV。。。
>tr | Q6FGZ3 | Q6FGZ3 |人类EPHX1蛋白(片段)OS=智人OX=9606 GN=EPHX1 PE=2 SV=1
MWLEILLTSV。。。
>tr | A0A2G8L4U1 | A0A2G8L4U1 | STIJA假定的环氧化物水解酶1类OS=刺参OX=307972 GN=BSL78(U 07808 PE=4 SV=1
MVHGWPGSFY。。。
我哪里出了问题?问题是
-v
不能与上下文切换一起使用。如果您有GNU grep
和PCRE
,则可以使用复杂的正则表达式:
grep——无组分隔符-xiP-a1'>((?!fragment)。+'
注意使用--no group separator
避免不同匹配之间出现--
<代码>-P启用PCRE
<代码>-x确保整行匹配<代码>>((?!fragment)。+确保片段
不出现在以
开头的行中(有关更多说明,请参阅)
但是,在这种情况下,您最好使用
awk
:
带有GNU awk的#
awk-v IGNORECASE=1'/^>/&&/片段/{f=2}f&&f--'
#任何awk
awk'/^>/&&tolower($0)!~/片段/{f=2}f&&f--'
这里,f=2
大于匹配后所需的行数<代码>/^>/&/fragment/将只匹配以
开头且不包含fragment
有关更多此类示例,请参见