如何运行与乘法增量并行
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}
我知道我可以使用 "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}