【发布时间】:2022-01-18 14:18:14
【问题描述】:
您好,我有几个文件的起始行(或记录)遵循以下格式:
cat file_1.txt | grep '>'
> CP022114.1 Kluyvera georgiana strain YDC799 chromosome, complete genome
我想检索该记录中对应于属分类类别的第二个字段,在本例中为“Kluyvera”。所以我用这个:
awk 'NR==1{print $2}' file.txt
我得到了
Kluyvera
问题在于,在某些文件中,第二个字段不对应于属分类类别,并且该属以字符串“candidatus”开头:
cat file_2.txt | grep '>'
> NTKC01000006.1 Candidatus Thioglobus sp. MED-G25 SUP05-clade-MED-G25-C6, whole genome shotgun sequence
在上面的记录中,“Thioglobus”是该物种的属。所以当我尝试上面的 awk 命令时,它会检索到“Candidatus”。
我希望 awk 打印“此文件具有候选资格”,而不是检索该记录的第二个字段。
【问题讨论】:
-
如果您的行以
>开头,则两个示例的第二个字段应分别为CP022114.1和NTKC01000006.1,而不是Kluyvera和Candidatus。您真的亲自尝试过awk 'NR==1{print $2}'吗? -
可能 OP 每个输入文件都有一个序列,因此实际上
NR==1等效于/>/,其余行是实际序列。 -
@tripleee 当他们
grep '>'检索目标记录时,我怀疑>是其中的一部分。在我编辑问题之前,它被降价渲染隐藏了,但它就在那里。 -
是的,是的,这是 FASTA 格式的一部分。这是一种简单的文本格式,其中任何以
>开头的行都是开始新序列的标题。如果文件中有多个序列,grep '>'将检索多个序列。 -
好的,但是如果他们想要从这个标题中获得他们所谓的属分类类别并带有前导
>字段,他们应该查看字段 3(或 4),而不是 2(或 3) ,不应该吗?