首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在并行处理中使用awk获取语法错误

在并行处理中使用awk获取语法错误
EN

Stack Overflow用户
提问于 2019-07-02 13:43:54
回答 3查看 241关注 0票数 4

我在一个文件夹中有44个.tsv文件,我想用bedtools tool的intersect命令计算每个成对的交集的数目。每个输出文件将有4列,我只需要在每个输出文件中保存列4的值的总和。当我一个人做的时候,我可以很容易地做,但是当我使用并行处理来同时做整个过程时,我得到了语法错误

以下是我手动逐个尝试每两对时的代码和结果

代码语言:javascript
复制
$ 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

以下是我使用并行处理时的代码和结果

代码语言:javascript
复制
$ 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值

EN

回答 3

Stack Overflow用户

发布于 2019-07-02 23:27:30

@DudiBoy有一个很好的解决方案。但对我来说,仅仅因为我想调用GNU并行就不得不创建另一个文件,这让我很恼火。

所以你也可以使用函数。这样您就不需要创建新文件了:

代码语言:javascript
复制
doit() {
  bedtools intersect -a "$1" -b "$2" -c | awk '{sum+=$4} END {print sum}'
}
export -f doit

parallel --results {1}.{2}.intersect doit {1} {2} ::: *.tsv ::: *.tsv
票数 4
EN

Stack Overflow用户

发布于 2019-07-02 18:42:46

我认为你需要这样引用它:

代码语言:javascript
复制
parallel bedtools intersect -a {1} -b {2} -c \| awk \'{sum+=\$4} END{print sum+0}\' \> {1}.{2}.intersect ::: *tsv ::: *tsv
票数 2
EN

Stack Overflow用户

发布于 2019-07-02 21:13:11

我相信@MarkSetchell是有效的答案。您还可以尝试通过将复杂的代码行插入到可以测试的bash脚本中来进行清理。

intersect.bash

代码语言:javascript
复制
 #!/bin/bash
 bedtools intersect -a $1 -b $2 -c | awk '{sum+=$4} END {print sum}'

测试intersect.bash以正确运行,然后将其并行化。

代码语言:javascript
复制
parallel intersect.bash {1} {2}

祝好运。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56846032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档