问题描述
首先,这是我的第一个问题,我刚刚报名参加,我是unix的新手,所以如果做错了事,请原谅。
216 Slender 216_L8_1.fq.gz 216_L8_2.fq.gz
222 Stumpy 222_L8_1.fq.gz 222_L8_2.fq.gz
218 Slender 218_L8_1.fq.gz 218_L8_2.fq.gz
220 Stumpy 220_L8_1.fq.gz 220_L8_2.fq.gz
221 Stumpy 221_L8_1.fq.gz 221_L8_2.fq.gz
219 Slender 219_L8_1.fq.gz 219_L8_2.fq.gz
我需要为每个命令运行bowtie2命令,其语法为;
bowtie2 -x Trypanosoma_brucei_brucei -1 216_L8_1.fq.gz -2 216_L8_2.fq.gz -S 216Slender.sam
所以我想做的是;对于该文件的每一行,请使用第一个字段和第二个字段构成上面代码的最后一部分,并使用文件的第3个和第4个字段作为代码的中间部分。
awk '{print $1$2".sam"}' fqfiles
awk '{print -1,$3,-2,$4}' fqfiles
我可以得到这些部分,但是我很难使它成为一个循环,该循环将采用第一行,采用第一行的字段,将其放入代码中,运行它,然后重新开始用于下一行等。
有人可以帮我写这个循环,还是建议我应该怎么做?
解决方法
使用read
逐行读取文件:
while read -r n s f1 f2 ; do
bowtie2 -x Trypanosoma_brucei_brucei -1 "$f1" -2 "$f2" -S "$n$s"
done < file