我有一个现有的perl单行程序(来自Edwards实验室),它可以很好地读取包含一个列ID的文本文件(名为ids.file
),并搜索第二个特殊格式的文本文件(在本例中名为fasta.file
-对于那些了解生物信息学的人来说是"fasta"格式),并返回与第一个文件的ID匹配的序列。我希望扩展这个脚本来做两个额外的事情:
- 如果
ids.file
包含一列数据,当前perl一行代码仅似乎可以工作。我想它的工作在一个文件,包含两列(由空格分隔),并对数据的第二列(好吧,真的任何列的数据,但我认为这将是明显的足以适应它,如果有人可以给出一个例子,使用第二列) - 我想从搜索的输出返回的任何结果追加到第三列,而不是仅仅到一个新的文件。
如果有人好心地提供了一个示例,但只有时间或倾向于处理其中一个,我更希望您尝试解决第2个问题-我已经接近解决第1个问题,使用awk只在第二列上使用Perl代码的for循环-我还没有得到它,但很接近,所以第2个问题对我来说似乎更难。
perl一行如下:
perl -ne 'if(/^>(S+)/){$c=$i{$1}}$c?print:chomp;$i{$_}=1 if @ARGV' ids.file fasta.file
我很感激你能给予的任何帮助! 不太确定,但这可以吗?
perl -ne 'chomp; s/^>(S+).*/$c=$i{$1}/e; print if $c;
$i{(/^S*s(S*)$/)[0]}="$_ " if @ARGV'
ids.file fasta.file