2

我有一个现有的 perl one-liner(来自 Edwards 实验室),它可以很好地读取ids.file包含列 ID 的文本文件(fasta.file名为格式)并返回与第一个文件中的 ID 匹配的序列。我希望扩展这个脚本来做两件额外的事情:

  1. 当前的 perl one-liner似乎ids.file在包含一列数据时才有效。我希望它适用于包含两列(由空格分隔)的文件,并作用于第二列数据(嗯,实际上是任何数据列,但我认为如果有人调整它会很明显可以使用第二列举个例子)
  2. 我想将从搜索输出返回的任何结果附加到第三列,而不仅仅是一个新文件。

如果有人愿意提供一个示例,但只有时间或意愿来处理其中一个问题,我希望您尝试解决 #2 - 我已经接近解决 #1 的 for 循环,该循环仅使用 awk使用第二列中的 Perl 代码 - 我还没有得到它,但已经接近了,所以 #2 对我来说似乎更难。

perl 一号线如下:

perl -ne 'if(/^>(\S+)/){$c=$i{$1}}$c?print:chomp;$i{$_}=1 if @ARGV' ids.file fasta.file

感谢您提供的任何帮助!

4

1 回答 1

2

不太确定,但这会吗?

perl -ne 'chomp; s/^>(\S+).*/$c=$i{$1}/e; print if $c; 
    $i{(/^\S*\s(\S*)$/)[0]}="$_ " if @ARGV' 
  ids.file fasta.file
于 2013-01-08T00:13:51.973 回答