linux - 带组捕获的并行 sed

标签 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
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 - 带组捕获的并行 sed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16437201/

相关文章:

linux - nginx 502 Bad Gateway 大文件上传

linux - 两个 crons 在 linux 上做同样的工作,哪个更好

regex - 如何在某个范围内使用 sed 删除 Unicode?

regex - 为什么这个 sed 正则表达式替换不起作用?

linux - 如何使用 shell 脚本使用来自标准输入(键盘)的信息更新文件?

java - java中的并行处理框架

php - 如何在我的 Linux 服务器上创建 PDF 文件的缩略图/屏幕截图?

linux - 在 bash/shell 脚本中使用 sudo 运行服务

c++ - 将启用 MPICH2 的代码转换为 OpenCL 代码

python - 等待队列填充的最佳方法python多处理