【发布时间】:2017-10-21 15:58:53
【问题描述】:
我想通过只取最后一列的一个特定部分来修改文件(gff3 格式)!
我的文件看起来像这样,九列由制表符分隔:
NW_015494524.1 Gnomon CDS 1220137 1220159。 - 0 ID=cds20267;Parent=rna22739;Dbxref=GeneID:107513619,Genbank:XP_016006018.1;Name=XP_016006018.1;gbkey=CDS;gene=A3GALT2;product=alpha_1%2C3-galactosyltransferase_2 protein_id=XP_016006018.1 p>
我只想提取最后一列 ($9) 中的基因名称 (;gene=XXX;)。 输出:
NW_015494524.1 Gnomon CDS 1220137 1220159。 - 0 A3GALT2
完成此操作后,我想将第 4、5、7、8 列和从第 9 列提取的值合并到一个唯一列中 预期输出:
A3GALT2 1220137 1220159 - 0
我尝试使用awk 仅在最后一列中采用模式gene=xxxx。我的基因名称是带或不带数字的大写字母;并由';'分隔第九列的分号。
awk FS "[ \t]" '$9 ~/gene=[A-Z0-9]$/ {print $0, $4, $5, $7, $8}' <file>
它不工作。还有其他方法可以使用awk 或sed 或grep 更好吗?
提前感谢您的帮助。
【问题讨论】:
-
您希望输出为
NW_015494524.1 Gnomon CDS 1220137 1220159 . - 0 A3GALT2或NW_015494524.1 Gnomon CDS 1220137 1220159 . - 0,请向我们解释一下? -
是的,抱歉。我想分两部分做,但我可以一次做完。我想要基因名称、位置、链和相位。感谢您的解决方案。
标签: awk