2012-11-23 128 views
1

我使用FASTA文件請求與--tblout選項,這是故意空間分隔(而不是製表符分隔)和對齊到對齊的列表格輸出格式運行分析hmmscan的特定列。切割從空間分隔的文件

文件看起來是這樣的(這只是一個格式示例)

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的結果進行比較(我已經能夠獲得我的Contig列表,有命中NR數據庫)

所以我的問題是:我怎麼能砍在我的所有重疊羣列? 我一直試着用grep,sed,cut命令,但是我還沒找到正確的。

我是新來的Unix語言,我還在學習所以每一個建議,將真正體會。

如果我的問題不清楚就告訴我,我可以修改它!

回答

1
awk 'NR!=1{print $3}' your_file 

perl -F -lane 'if($.!=1){print $F[2]}' your_file 
+0

謝謝!awk命令正常工作。我想出瞭如何獲得Contigs專欄,但是這樣更快!謝謝 – user1819854

1

從表面上看,如果你有GNU cut,你可以使用:

cut -i -f 3 tblout-file 

-i選項意味着一個或空白將被視爲該領域的分隔符(而沒有它,每個空白爲一字段分隔符) 。非GNU版本的cut通常不支持-i。 (您可以通過運行cut --version檢查是否是GNU cut;如果你得到一個有意義的版本號,它的(可能)GNU,如果你得到無效選項的消息,事實並非如此。)

這是否不工作您?顯然,你用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 
+0

感謝!awk命令工作得很好! – user1819854