如何读取 2 列文件并将每一列作为 GNU parallel 的成对输入传递

问题描述 投票:0回答:1

我在文件中的目录中有一个配对文件列表(使用

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

你可以看到这对在R1R2之间。

这只是为了测试,因为这将被传递给另一个命令。下面的命令只是逐行粘贴。

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
bash parallel-processing gnu-parallel
1个回答
1
投票
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_*

这样可以避免粘贴。

© www.soinside.com 2019 - 2024. All rights reserved.