我在一个文件夹中有44个.tsv文件,我想用bedtools工具的intersect命令计算每个成对的相交数。每个输出文件将具有4列,而我只需要在每个输出文件中仅保存第4列的值之和。我一一做就很容易,但是当我同时使用并行处理来完成整个过程时,会出现语法错误
这是当我手动一对一尝试每两对时的代码和结果
$ bedtools intersect -a p1.tsv -b p2.tsv -c
chr1 1 5 1
chr1 8 12 1
chr1 18 20 1
chr1 21 25 0
bedtools intersect -a p1.tsv -b p2.tsv -c | awk '{sum+=$4} END {print sum}
3 这是我使用并行处理时的代码和结果
$ parallel "bedtools intersect -a {1} -b {2} -c |awk '{sum+=$4} END {print sum}'> {1}.{2}.intersect" ::: ls *.tsv
::: ls *.tsv
awk: cmd. line:1:{sum+=} END {print sum}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1:{sum+=} END {print sum}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1:{sum+=} END {print sum}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1:{sum+=} END {print sum}
awk: cmd. line:1: ^ syntax error 结果应该是44 * 44个文件,其中包含一个单值对象,例如3个
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
我认为您需要像这样引用它:
parallel bedtools intersect -a {1} -b {2} -c \| awk \'{sum+=\$4} END{print sum+0}\' \> {1}.{2}.intersect ::: *tsv ::: *tsv