我使用FASTA文件运行hmmscan分析,要求使用--tblout选项的表格输出格式,这是故意以空格分隔(而不是制表符分隔)并对齐到对齐列。
文件看起来像这样(这只是一个格式示例)
targetname accession queryname accession e-value score bias
x_x_x PFyyyy.y ContigXXX_0 - x.xe-xx yy.y x.x
x PFyyyy.yy COntigXXX_1 - xe-x yy.y x.x
x_x PFyyyy.y COntigXXX_2 - xe-xx y.y x.x
x_x_x PFyyyy.yy COntigXXX_3 - x.xe-x yy.y x.x
.
..
其中目标名称是例如:Methyltransf或Dimer_tnp_hAT或Nucleotide_trans
其中加入例如:PF13847.1或PF03407.11或PF01958.13;
其中查询名称为例如:Contig244_1或Contig44245_3或Contig12345_6
第二个入藏栏是: -
其中e.value例如:4.0e-10或3.5e-15等。
并且得分和偏差是这种格式的数字:xx.x
我想做的是切割queryname色谱柱,其中所有对蛋白质结构域具有显着命中的ContigXXX_X都是。
在此之后,我将能够对它们进行排序,并且只保留每个Contig的第一次出现,我可以将该文件与BlastP和BlastX的结果进行比较(我已经能够得到我的Contigs列表了点击nr数据库)
所以我的问题是:如何切割所有Contigs所在的列? 我一直尝试使用grep,sed,cut命令,但我还没找到合适的命令。
我是Unix语言的新手,我还在学习,所以每个建议都会非常感激。
如果我的问题不明确,请告诉我,我可以修改它!
答案 0 :(得分:1)
表面上看,如果你有GNU cut
,你可以使用:
cut -i -f 3 tblout-file
-i
选项意味着将一个或空格作为字段分隔符(如果没有它,则每个空格都是字段分隔符)。非GNU版本的cut
通常不支持-i
。 (你可以通过运行cut
检查它是否是GNU cut --version
;如果你得到一个有意义的版本号,它(可能)是GNU,如果你得到无效的选项消息,它就不是。)< / p>
这不适合你吗?显然,您替换为tblout-file
创建的文件的名称。
如果出现问题(例如没有GNU cut
),请考虑使用awk
:
awk '{print $3}' tblout-file
这两个也包括输出中的第一行;有多种方法可以删除第一行。
cut -i -f 3 tblout-file | sed 1d
awk 'NR>1 { print $3 }' tblout-file
答案 1 :(得分:1)
awk 'NR!=1{print $3}' your_file
或
perl -F -lane 'if($.!=1){print $F[2]}' your_file