2

最初の fasta ファイルから ORF を抽出しましたが、各トランスクリプトの最長の ORF を取得したいと考えています。

faSize で ORF のサイズを抽出し、サイズで並べ替えた後、使用したコードは次のとおりです。

perl -ane'print unless $x{$F[0]}++'

今回はperlコマンドの使い方に問題があります。

サイズを抽出してトランスクリプトをソートした後、次のようなものがあります。

Singlet_1000_61         3844 
Singlet_2000_73         3508 
Singlet_1000_62         3081 
Singlet_2000_62         3008 
Singlet_3500_48         2973 
Singlet_4000_48        2964 
Singlet_3500_54        2863

私が欲しいのは:

Singlet_1000_61         3844 
Singlet_2000_73         3508
Singlet_3500_48         2973
...

この場合、perl コマンドは機能しません。

どうすればそれを機能させることができるかについて何か提案はありますか?

それともawkコマンド?

4

2 に答える 2

2

見るだけなら

Singlet_1000_61 3844
        ^^^^

大丈夫です、

 perl -F_ -ane'print unless $x{$F[1]}++'

見たい方は

Singlet_1000_61 3844
^^^^^^^^^^^^

それから

perl -ane'$F[0] =~ s/_[^_]*\z//; print unless $x{$F[0]}++'
于 2013-04-15T00:38:04.170 に答える
0

行の 2 番目の部分がアンダースコアで分割された最初の各行を出力します。

awk -F_ '!s[$2]++' <<< 'Singlet_1000_61 3844
Singlet_2000_73 3508
Singlet_1000_62 3081
Singlet_2000_62 3008
Singlet_3500_48 2973
Singlet_4000_48 2964
Singlet_3500_54 2863
'
Singlet_1000_61 3844
Singlet_2000_73 3508
Singlet_3500_48 2973
Singlet_4000_48 2964
于 2013-04-15T00:18:25.720 に答える