首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用一个变量而不是一个文件来进行床的输入?

使用一个变量而不是一个文件来进行床的输入?
EN

Stack Overflow用户
提问于 2020-12-17 15:58:19
回答 1查看 193关注 0票数 0

我想在下面命令中的文件中输入一个变量,这可能吗?

我想用程序bedtools getfasta生成一些FASTA文件。通常,我首先使用下面的awkbedtools sort命令对输入文件进行排序。然后输出通过管道传输到输出文件中。这个输出文件将遵循-bed标志在bedtools getfasta中,这样我就可以创建我需要的FASTA文件。

代码语言:javascript
复制
awk '{if ($2>$3)print $1,$3,$2,".",".","-";else print $1,$2,$3,".",".","+";}' OFS='\t' Infile.bed | 
awk '{a=$2-1;print $1,a,$3,$4,$5,$6;}' OFS='\t' | 
bedtools sort > OrderedFile.bed


bedtools getfasta -s -fi Infile.fasta -bed OrderedFile.bed -fo Outfile.fasta

但是,我有很多文件想要使用bedtools getfasta。我希望通过将初始OrderedFile.bed命令的输出设置为变量来避免创建附加的awk文件(参见下面)

代码语言:javascript
复制
swapped=$(awk '{if ($2>$3)print $1,$3,$2,".",".","-";else print $1,$2,$3,".",".","+";}' OFS='\t' Infile.bed | awk '{a=$2-1;print $1,a,$3,$4,$5,$6;}' OFS='\t' | bedtools sort) 

这是非常好的工作:

代码语言:javascript
复制
echo "${swapped}"
HEADING_1   4   12  .   .   +
HEADING_2   4   12  .   .   -

当我在bedtools getfasta命令中使用变量时,不会生成任何输出。是否有一种方法可以像文件一样读取变量?我试过以下几种方法,但仍然不起作用:

  1. bedtools getfasta -s -fi Infile.fasta -bed "${swapped}" -fo Outfile.fasta
  2. bedtools getfasta -s -fi Infile.fasta -bed <(echo "${swapped}") -fo Outfile.fasta
  3. bedtools getfasta -s -fi Infile.fasta -bed <(<<< "${swapped}") -fo Outfile.fasta

基本上,我可以用一个变量代替一个文件作为命令的参数吗?

我希望这是有意义的

谢谢,

杰米

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-17 16:20:43

如果您在测试套件中查找getfasta命令,当它希望从stdin读取床输入时,您将看到它将单词stdin作为文件名传递给它。例如:

LINES=$(echo $'chr1\t1\t10‘$BT getfasta -fi t.fa -bed stdin -fo -stdin 'END{ print NR }')

所以,我们只需要在你的脚本中做同样的事情:

代码语言:javascript
复制
bedtools getfasta -s -fi Infile.fasta -bed stdin -fo Outfile.fasta <<<"$swapped"

顺便说一句--在大多数情况下,你的第二次尝试会奏效:

代码语言:javascript
复制
bedtools getfasta -s -fi Infile.fasta -bed <(echo "${swapped}") -fo Outfile.fasta

将...insofar作为<(...)表达式替换为一个文件名,从该文件名可以读取手头的输出。(这里有一些警告:它通常通过一个/dev/fd链接,所以除了默认的stdin、stdout和stderr之外,任何关闭文件描述符的程序都无法从给定的内容中读取;而且,如果该文件名是FIFO的结束,任何需要在输入中查找、多次读取、在读取之前检查其大小等的程序都不能工作)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65344110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档