我是GNU並行的新手,我只是對bash的半知識,所以我非常感謝一些建議。在修改colsep輸入時從輸入文件運行GNU並行
我想要逐行閱讀一個輸入文件,該文件包含第一列中的文件路徑和第二列中第二個文件的路徑,並且每行使用列作爲命令中的輸入。但是,我需要替換第一列中的部分文件名,以使我的命令有效。
的文件應該是這樣的,由製表符分隔兩個文件路徑:
path_to_file/filename1_combined_R1_001.bam \t path_to_file/filename1.fna
path_to_file/filename2_combined_R1_001.bam \t path_to_file/filename2.fna
我需要能夠做的是從一列刪除字符串「_R1_001.bam」,取而代之的是我自己的字符串(例如_R1_fastq)來調用名爲removeM
的腳本。僅供參考,我不知道如果我使用--colsep
correctly.The命令如下:
parallel -j10 --colsep '\t' input_file.tsv removeM -1 {1}_R1.fastq -2 {1}_R2.fastq -i {2} -f CoralRemoved_{1}_R1.fastq -r CoralRemoved_{}_R2.fastq`
至於我可以告訴我可以使用基名去除(類似{1}),但我不知道如何刪除更多的擴展名(.bam)。
預先感謝您。
謝謝馬克。我很感謝你的回答,但它並沒有達到我想要的。你的建議會讓我得到我想要的fastq文件的所需格式(第一列),但是我必須找到一種方法來抓取第二列中的相關文件路徑。我也許可以通過在'back ticks'內使用第一列作爲搜索和管道來切割-f來獲得第二列來做到這一點,但我並不認爲這將以相同的方式並行運行。 sed's/_R1_001.bam //'input_file.tsv | parallel -j10 removeM -1 {} _R1_fastq -2 {} _R2_fastq -i'grep {} |切割-f 2「 –