我在一个目录中有一个配对文件列表,我将其放入文件中(使用 paste
)
cat list.files.r12.txt | head -n3
./ID1_L2_R1_001.fastq.gz ./ID1_L2_R2_001.fastq.gz
./ID2_L3_R1_001.fastq.gz ./ID2_L3_R2_001.fastq.gz
./ID3_L2_R1_001.fastq.gz ./ID3_L2_R2_001.fastq.gz
您可以看到该对位于 R1 和 R2 之间。
这仅用于测试,因为这将传递给另一个命令。下面的命令只是逐行粘贴。
parallel -j 1 "echo {}" :::: <(cat list.files.r12.txt | head -n3)
此文件重复文件
parallel -j 1 "echo {} {}" :::: <(cat list.files.r12.txt | head -n3)
这不起作用:
parallel -j 1 "echo {1} {2}" :::: <(cat list.files.r12.txt | head -n3)
基本上,我想要的是 list.files.r12.txt
文件的每一行都可以并行执行。这是所需的输出:
program ... ./ID1_L2_R1_001.fastq.gz ./ID1_L2_R2_001.fastq.gz
program ... ./ID2_L2_R1_001.fastq.gz ./ID2_L2_R2_001.fastq.gz
program ... ./ID3_L2_R1_001.fastq.gz ./ID3_L2_R2_001.fastq.gz
最佳答案
cat list.files.r12.txt | head -n3 |
parallel --colsep '\t' echo
cat list.files.r12.txt | head -n3 |
parallel --colsep '\t' echo one:{1} two:{2}
当您进行配对末端读取时,您通常可以执行以下操作:
parallel --plus echo read:{} paired:{/_R1_/_R2_/} ::: *__R1_*
这样就可以避免粘贴。
关于bash - 如何读取 2 列文件并将每列作为 GNU 并行的配对输入传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75665926/