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

打印第一行的第二部分由下划线分隔的每一行。

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 回答