如何解决使用“ for”对齐配对的末端序列
我有一个包含许多成对最终文件(1.1.fq 1.2.fq 2.1.fq 2.2.fq ...
)的文件夹,我想使用“ for”对每对(*.1fq *2.fq
)进行匹配,并生成2个输出*.stats.txt
和*.sam
。
我写了以下命令:
for x in *.fq ; do
~/Pedro_Dias/Mamão/Single_end/novocraft/novoalign -d cpapaya.novoIndex -f demultiplex-fq/$x *.1.fq demultiplex-fq/$x *.2.fq -x 3 -H -a -o SAM 2> demultiplex-sam/$x *.stats.txt > demultiplex-sam/$x *.sam;
done
代码返回错误:
demultiplex-sam/demultiplex-fq/98.1.fq*.stats.txt:No file or directory
P.s。我的文件位于demultiplex-fq
文件夹中,并且输出必须转到demultiplex-sam
文件夹中。我正在一个包含demultiplex-fq
demultiplex-sam
文件夹的文件夹中。
解决方法
您应该仅在成对文件中循环一个文件。然后将.1.fq
替换为.2.fq
,以获取该对中的另一个文件。
通配符需要包含目录名称,然后在生成输出文件名时必须替换目录。
for x in demultiplex-fq/*.1.fq
do
y=${x/.1.fq/.2.fq}
stats=${x/demultiplex-fq/demultiplex/sam}.stats.txt
sam=${x/demultiplex-fq/demultiplex/sam}.sam
~/Pedro_Dias/Mamão/Single_end/novocraft/novoalign -d cpapaya.novoIndex -f "$x" "$y" -x 3 -H -a -o SAM 2> "$stats" > "$sam"
您无需在命令中使用通配符,而只需使用$x
和$y
变量即可。
我使用了该代码并起作用:
for x in $( ls -1 dem*/*.fq | rev | cut -d . -f 3- | rev | sort -u ) ; do ~/Pedro_Dias/Mamão/Single_end/novocraft/novoalign -d cpapaya.novoIndex -f $x.1.fq $x.2.fq -x 3 -H -a -o SAM 2> ./bams/$(echo $x | tr / _).stats.txtx > ./bams/$(echo $x | tr / _).sam; done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。