如何运行与乘法增量并行

How to run parallel with multiplying increment

我知道我可以使用 "parallel" 到 运行 任何 script/application 的多个实例并行处理给定增量的变量,例如:

parallel "echo hello {}" ::: {1..16..2}

输出将是:

hello 1
hello 3
hello 5
hello 7
hello 9
hello 11
hello 13
hello 15

我想使用与 运行 变量相乘的增量,以便得到如下输出:

hello 1
hello 2
hello 4
hello 8
hello 16

我应该在{1..16..#}中写什么?

谢谢!

试试这个:

parallel "echo hello {}" ::: $(awk 'BEGIN {for(i=0; i<=16; i++) printf 2**i" "}')

awk 用于打印出 2 的幂列表,然后 parallel.

将使用该列表

或者:

parallel "echo hello {}" ::: $(printf '%s\n' 2^{0..16} | bc | tr '\n' ' ')

这会打印出数字 1 到 16 作为字符串 x^2 的一部分,printf 确保每个数字都在单独的行上。 bc 然后计算实际数字,tr 再次删除换行符。

使用 {= =}(在 20140822 及更高版本中可用):

seq 1 2 16 | parallel echo hello {}
parallel echo hello '{= $_=2*$_ =}' ::: {1..16}
seq 1 16 | parallel echo hello '{= $_=2**$_ =}'
parallel echo hello '{= $_=2**$_ =}'  ::: {1..16}