我从最初的fasta文件中提取了ORFs,现在我想获得每个转录本的最长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命令?
答案 0 :(得分: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]}++'
答案 1 :(得分: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