我有一个现有的perl单线程(来自Edwards实验室)可以很好地读取包含一个 ID列的文本文件(名为ids.file
)并搜索第二个,特殊格式的文本文件(在此示例中名为fasta.file
- 以“fasta”格式为知道生物信息学的人提供)并返回与第一个文件中的ID匹配的序列。我希望扩展这个脚本以做另外两件事:
ids.file
包含一列数据,则当前的perl one-liner 似乎有效。我希望它能够处理一个包含两列(用空格分隔)的文件,并对第二列数据进行操作(好吧,实际上是任何数据列,但我认为如果有人,它会很明显地适应它可以使用第二列提供示例)如果有人善于提供一个例子,但只有时间或倾向于处理其中一个,我宁愿你尝试解决#2 - 我已经接近用一个for循环来解决#1 awk只在第二列上使用Perl代码 - 我还没有得到它,但我很接近,所以#2对我来说似乎更难。
perl one liner如下:
perl -ne 'if(/^>(\S+)/){$c=$i{$1}}$c?print:chomp;$i{$_}=1 if @ARGV' ids.file fasta.file
我感谢您提供任何帮助!
答案 0 :(得分:2)
不太确定,但这会吗?
perl -ne 'chomp; s/^>(\S+).*/$c=$i{$1}/e; print if $c;
$i{(/^\S*\s(\S*)$/)[0]}="$_ " if @ARGV'
ids.file fasta.file