1
这是我写的fastq脚本的一部分。在脚本开始时,我使用while循环读取文件。将char与字符串进行比较
while read Sequence_Name && read Sequence && read Quality_name && read Quality_sequence
该文件是一个由4线批次(SEQUENCE_NAME,序列,Quality_name,Quality_sequence)
类似的东西;
@HWI-ST330:304:H045HADXX:1:1101:1162:2055
NAGAACTTGGCGGCGAATGGGCTGACCGCTTCCTCGTGCTTTACGGTATCGCCGCTCCCGATTCGCAGCGCATCGCCTTCTATCGCCTTCTTGACGAGTT
+
#[email protected]?;B-<CBDDD>BBBBDDB5<@[email protected]?B<?
这部分是剧本给我的问题
iq=1
fastq="'!\"#$%&\'\(\)*+,-./:;<=>[email protected][\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~"
until [ $iq -ge ${#Quality_sequence} ]
do
charSQ=$(expr substr $Quality_sequence $iq 1)
if [[ $fastq =~ $charSQ ]] ; then
let iq++
else
echo "invalide format sequence quality"
fi
done
问题的部分是根据输入它不会做的作业。例如
使用此输入:
@SRR1350630.9.1 HWUSI-EAS753_0012:8:1:3888:945 length=22
GAGGTAGTAGATTGTATAGTTA
+SRR1350630.9.1 HWUSI-EAS753_0012:8:1:3888:945 length=22
KKJJNH]NNNNNNN________
它的工作,但这些投入
@SRR1350630.9.1 HWUSI-EAS753_0012:8:1:3888:945 length=22
GAGGTAGTAGATTGTATAGTTA
+SRR1350630.9.1 HWUSI-EAS753_0012:8:1:3888:945 length=22
KKJJNH[NNNNNNN________ #replacing ] by [ give me opposite result
@HWI-ST330:304:H045HADXX:2:2111:20110:84312
GTCGAGGTGCCGTAAAGCACTAAATCGGAACCCTAAAGGGAGCCCCCGATTTAGAGCTTGACGGGGAAAGCCGGCGAACGTGGCGAGAAAGGAAGGGAAG
+
@@<FFFFDFFH>DEGFEGIJGJIJD9;CFCG;@;[email protected]?CD>[email protected]@@@??90))5055(22-95<-5(:<[email protected]?8?
它不会因为我得到的消息:
invalide format sequence quality
非常感谢很多帮助我找到原因?
尝试在if测试中引用'“$ charSQ”''此外,如果您试图查明是否有任何无效字符在行中,您可以这样做,而不用逐字符地搜索更简单(反转)的正则表达式匹配。只需在有效字符中创建(否定'^')字符类并测试它是否与字符串匹配。 –
谢谢Etan引用“$ charSQ”似乎已经完成了至少使用我的测试文件,只有50行。 – Papy
引用作品的原因是因为没有它,$ charSQ中的字符被解释为正则表达式。引用它,它被视为一个文字字符串。但你应该尝试我的另一个建议,因为它将在大文件/行上执行*更好。 –