Shell,输入文件在其他命令中用作前缀?

时间:2016-08-09 21:43:01

标签: bash shell

我是shell的新手,我正在尝试采用别人的代码供我自己使用。

我有一个名为“sampleprefix.txt”的文件,如下所示:

Sample1_A
Sample2_A
Sample3_B
Sample3_A
Sample4_C
Sample4_A

我想写一个shell脚本,它将逐行读取sampleprefix.txt文件,并在脚本中将每一行用作我的$ {prefix}。

我想要这个shell脚本:

file ="sampleprefix.txt"
while read prefix ; do
  merge ${prefix}.fastq
done < sampleprefix.txt  #use ${prefix} as prefix:
VSEARCH="vsearch"
OUTPUT="combined_nc.fasta"
COMBINED="combined.fasta"

#Part I:
wc -l ${prefix}.fastq >> test.txt

#Part II:
"${VSEARCH}" --fastq_filter ${prefix}.fastq --fastaout ${prefix}.fasta
cat *.fasta > ${COMBINED}

#Part III:
"${VSEARCH}" --uchime_denovo ${COMBINED} --chimeras chimeras_denovo.fasta --nonchimeras ${OUTPUT} --uchimeout uchimeinfo_denovo

输出这三部分:

第一部分:

wc -l Sample1_A.fastq >> test.txt
wc -l Sample2_A.fastq >> test.txt
...
wc -l Sample4_A.fastq >> test.txt
#Continually add wc -l for each file to test.txt

第二部分:

vsearch --fastq_filter Sample1_A.fastq --fastaout Sample1_A.fasta
vsearch --fastq_filter Sample2_A.fastq --fastaout Sample2_A.fasta
...
vsearch --fastq_filter Sample4_A.fastq --fastaout Sample4_A.fasta
#again looping through each line to create a new file (.fasta) with the same prefixes

cat *.fasta > combined.fasta

第三部分:

vsearch --uchime_denovo combined.fasta --chimeras chimeras_denovo.fasta --nonchimeras combined_nc.fasta --uchimeout uchimeinfo_denovo

我相信我通过sampleprefix.txt文件解析的注释是不正确的。但我不明白如何解决它。 使用“vsearch”是不相关的,因为我只需要弄清楚在shell中通过prefix.txt文件的语法。 vsearch只是我正在使用的一个程序。如果您有任何建议,请告诉我。

1 个答案:

答案 0 :(得分:1)

也许我真的不知道它应该如何工作,但是不会将循环行的结尾移动到脚本的末尾就行了吗?我的意思是

$scope.dis = {isFlagging: false};
$scope.flagDiscussion = function(discussionId) {
    Service.flagDiscussion(discussionId);
    $scope.dis.isFlagging = true;
};