我必须处理一个大文件,并且一直在阅读有关并行命令,以便在使用sed,sort等时尝试使用多于1个核心处理器。所以我首先想改变每四个的第一行(因为这种文件的命名约定--FastQ格式)。并行sed与组捕获
例如,这将是一组4个,我想修改第一行:
cat sbcc073_pcm_ill_all.musket_default.fastq | head -4
@HWUSI-EAS1752R:29:FC64CL3AAXX:8:65:16525:4289_1:N:0:ACTTGA
GCGAGAGAATGGATGAGTTGATAGTTACACAGCGGTTTTGATATACTGATGCCTTGTATATGTTCGT
+
GHHHHHHHHHHGGEEGEDGGGGH=HHHHHEGDBFF8BED=BAEEEAHHHBD>GGGEEHHHFE>[email protected]
随着下一个命令我已经完成的工作:
cat sbcc073_pcm_ill_all.musket_default.fastq | head -4 | sed 's#^\(@.*\)_\([12]\).*#\1/\2#'
@HWUSI-EAS1752R:29:FC64CL3AAXX:8:65:16525:4289/1
GCGAGAGAATGGATGAGTTGATAGTTACACAGCGGTTTTGATATACTGATGCCTTGTATATGTTCGT
+
GHHHHHHHHHHGGEEGEDGGGGH=HHHHHEGDBFF8BED=BAEEEAHHHBD>GGGEEHHHFE>[email protected]
然而,当使用并行时,似乎不能识别组捕获括号:
cat sbcc073_pcm_ill_all.musket_default.fastq | head -4 | parallel --pipe sed 's#^\(@.*\)_\([12]\).*#\1/\2#'
@HWUSI-EAS1752R:29:FC64CL3AAXX:8:65:16525:4289_1:N:0:ACTTGA
GCGAGAGAATGGATGAGTTGATAGTTACACAGCGGTTTTGATATACTGATGCCTTGTATATGTTCGT
+
GHHHHHHHHHHGGEEGEDGGGGH=HHHHHEGDBFF8BED=BAEEEAHHHBD>GGGEEHHHFE>[email protected]
当移除回退骨灰或使用sed -r命令告诉我:
/bin/bash: -c: line 3: syntax error near unexpected token `('
/bin/bash: -c: line 3: ` (cat /tmp/60xrxvCIRX.chr; rm /tmp/60xrxvCIRX.chr; cat -) | (sed s#^(@.*)_([12]).*#\1/\2#);'
任何人都可以对此有所了解吗?
非常感谢你
@fedorqui谢谢 – cantalapiedra 2013-05-08 09:36:21
你应该考虑使用Perl模块['Bio :: Index :: Fastq'](http://doc.bioperl.org/releases/bioperl-current/bioperl-live/Bio/Index/Fastq .html) – mvp 2013-05-08 09:50:00