gpt4 book ai didi

linux - GNU 并行组合,多次使用参数列表

转载 作者:IT王子 更新时间:2023-10-29 00:37:16 25 4
gpt4 key购买 nike

我想使用以下方法生成独特的作业,其中 {1} 和 {2} 是独特的元组:

parallel echo {1} {2} ::: A B C D ::: A B C D

例如在python中(itertools)提供了这样一个组合生成器:

permutations('ABCD', 2)

AB AC AD BA BC BD CA CB CD DA DB DC


有没有办法直接通过bash实现呢?还是 GNU 并行本身?也许以某种方式跳过多余的工作?但是,我该如何检查已经使用了哪些参数组合。

parallel echo {= 'if($_==3) { skip() }' =} ::: {1..5}

最佳答案

如果值是唯一的:

parallel echo {= 'if($arg[1] eq $arg[2]) { skip() }' =} ::: A B C D ::: A B C D

或者更笼统地说:

parallel echo \
'{= my %seen; for my $a (@arg) { $seen{$a}++ and skip() } =}' \
::: A B C D ::: A B C D ::: A B C D

如果你想将 AB 视为 BA 那么这只会运行其中一种组合:

parallel echo \
'{= for my $t (2..$#arg) { if($arg[$t-1] ge $arg[$t]) { skip() } } =}' \
::: A B C D ::: A B C D ::: A B C D

如果你经常使用这些,请记住你可以使用 --rpl 将它放在 ~/.parallel/config 中来制作你自己的替换字符串

--rpl '{unique} my %seen; for my $a (@arg) { $seen{$a}++ and skip() }'
--rpl '{choose_k} for my $t (2..$#arg) { if($arg[$t-1] ge $arg[$t]) { skip() } }'

然后运行:

parallel echo {unique} ::: A B C D ::: A B C D ::: A B C D
parallel echo {choose_k} ::: A B C D ::: A B C D ::: A B C D

关于linux - GNU 并行组合,多次使用参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46298682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com