我想在下面的命令中输入一个变量来代替文件,这可能吗?
我想使用该程序生成一些 FASTA 文件bedtools getfasta
。通常我会先使用下面的awk
tobedtools sort
命令来订购输入文件。然后将输出通过管道传输到输出文件中。然后这个输出文件将跟随-bed
标志,bedtools getfasta
这样我就可以创建我需要的 FASTA 文件,例如
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
。awk
我希望通过将初始命令的输出设置为变量来避免创建额外的 OrderedFile.bed 文件bedtools sort
(见下文)
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)
这很好用:
echo "${swapped}"
HEADING_1 4 12 . . +
HEADING_2 4 12 . . -
当我在bedtools getfasta
命令中使用变量时,不会生成任何输出。有没有办法像文件一样读取变量?我尝试了以下方法,但仍然无法正常工作:
bedtools getfasta -s -fi Infile.fasta -bed "${swapped}" -fo Outfile.fasta
bedtools getfasta -s -fi Infile.fasta -bed <(echo "${swapped}") -fo Outfile.fasta
bedtools getfasta -s -fi Infile.fasta -bed <(<<< "${swapped}") -fo Outfile.fasta
基本上,我可以使用变量代替文件作为命令的参数吗?
我希望这是有道理的
谢谢,
杰米