BCA*_*Arg 1 pipe io-redirection xargs bioinformatics
在我正在处理的目录中,我有两个扩展名为 的文件.sam:
PD180425_aligned_minimap.sam
PD180793_aligned_minimap.sam
Run Code Online (Sandbox Code Playgroud)
对于这两个文件中的每一个,我都需要应用如下所示的命令:
samtools view -Sb pattern.sam > pattern.bam
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用xargs它。我想要做的是在之前捕获前缀_aligned_minimap并使用它来保存到我的输出。我尝试的是以下内容:
ls *.sam | cut -d "_" -f 1 | xargs -i samtools view -Sb {}_aligned_minimap.sam > {}_aligned_minimap.bam
Run Code Online (Sandbox Code Playgroud)
我希望必须生成 iePD180425_aligned_minimap.bam和PD180793_aligned_minimap.bam. 尽管我的命令正在运行,但我在我正在处理的目录中看到该文件{}_aligned_minimap.bam已生成,这表明我尝试使用 xargs ( PD180425and PD180793)捕获的输入不起作用。
我该怎么做呢?
小智 6
我对此的首选方法是这样的:
for SAM_FILE in *.sam; do
samtools view -Sb "$SAM_FILE" > "${SAM_FILE/sam/bam}"
done
Run Code Online (Sandbox Code Playgroud)
可以做成一个像
for SAM_FILE in *.sam; do samtools view -Sb "$SAM_FILE" > "${SAM_FILE/sam/bam}"; done
Run Code Online (Sandbox Code Playgroud)
这使用参数扩展来更改输出文件扩展名:https : //wiki.bash-hackers.org/syntax/pe
在我看来,如果您或其他人以后偶然发现您的脚本,这种风格可以清楚地表明您要做什么。