Linux 群捕获并行sed

Linux 群捕获并行sed,linux,sed,parallel-processing,gnu-parallel,fastq,Linux,Sed,Parallel Processing,Gnu Parallel,Fastq,我必须处理一个大文件,并且一直在阅读有关并行命令的内容,以便在使用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 GCGAGAGAATGGATGAGTTGA

我必须处理一个大文件,并且一直在阅读有关并行命令的内容,以便在使用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#'"
尝试在双引号内插入完整命令,如下所示


试着在这样的双引号中插入完整的命令。

你应该考虑使用Perl模块,你应该考虑使用Perl模块,谢谢。为什么我需要在这里替换“$”?parallel--pipe“perl-lne”if($.%4==1){s/^(@.*)\[12])./\$1\/\$2/;print}“谢谢。为什么我需要在这里替换“$”?parallel--pipe“perl-lne”if($.%4==1){s/^(@.*)\[12])./\$1\/\$2/;print}”