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 Dparallel echo {choose_k} ::: A B C D ::: A B C D ::: A B C D总结
以上是内存溢出为你收集整理的linux – GNU并行组合,多次使用参数列表全部内容,希望文章能够帮你解决linux – GNU并行组合,多次使用参数列表所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)