如何将参数的一部分传递给gnu parallel命令

时间:2013-10-22 22:35:44

标签: bash parallel-processing gnu-parallel

我正在尝试运行一个GNU并行命令并传递一堆日期,类似这样但更复杂的命令:

parallel '/some/binary {}' ::: 20131017 20131018

这有效,但后来我需要跨越两个不同月份的日期,并且命令看起来应该像20131018这样的参数:

'/some/binary 201310/20131018'

所以它拆分了论证的第一部分..我可以实现这种效果吗?用bash变量思考我想:

'/some/binary {:4}/{}' ::: 20130910 20131018 etc...

3 个答案:

答案 0 :(得分:4)

并行命令被解释为shell命令,因此您可以执行

parallel --gnu 'var="{}"; /some/binary "${var:0:6}/$var"' ::: 20131017 20131018

这将执行

/some/binary 201310/20131017
/some/binary 201310/20131018

答案 1 :(得分:1)

从20140722开始,您可以:

cout << "value of pStsart: " << (void *)pStart << "\n";

答案 2 :(得分:0)

对于纯粹的丑陋,不要忘记awk使用管道并行的结果来挖掘数据:

$ echo 20131017 > foo
$ echo 20131018 >> foo
$ awk '{printf "%s/%s\n", substr($1,0,4), $1}' foo | parallel echo
除了丑陋之外,这是管道友好的。一个简单的print以及一些OFS魔法比我怀疑的printf更干净。如果那是你的果酱,你可以选择使用sed

那就是说,我个人会修改/some/binary,不要期待这样糟糕的输入。