我正在尝试运行一个GNU并行命令并传递一堆日期,类似这样但更复杂的命令:
parallel '/some/binary {}' ::: 20131017 20131018
这有效,但后来我需要跨越两个不同月份的日期,并且命令看起来应该像20131018这样的参数:
'/some/binary 201310/20131018'
所以它拆分了论证的第一部分..我可以实现这种效果吗?用bash变量思考我想:
'/some/binary {:4}/{}' ::: 20130910 20131018 etc...
答案 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
,不要期待这样糟糕的输入。