我必须处理一个大文件,并一直在阅读关于parallel命令,以尝试在使用sed、sort等时使用多个核心处理器。所以我首先想改变每四行中的第一行(因为这种文件的命名约定-fastq格式)。
例如,这是一个四人组,我想修改第一行:

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>GG@E

下一个命令我完成了工作:
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>GG@E

但是,当使用parallel时,似乎无法识别组捕获括号:
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>GG@E

当删除反斜杠或使用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# );'

有人能帮我点颜色吗?
非常感谢

最佳答案

parallel --pipe "sed 's#^\(@.*\)_\([12]\).*#\1/\2#'"

尝试将完整命令插入双引号中,如下所示。

关于linux - 与组捕获并行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16437201/

10-12 17:46