【问题标题】:GNU Parallel job number leading zeros with multiple expansions具有多个扩展的 GNU 并行作业编号前导零
【发布时间】:2021-03-17 06:22:06
【问题描述】:

我正在使用 GNU Parallel 创建一个 Python 作业文件。我希望文件看起来像这样:

job_num, args
001, -a 1 -b 2
002, -a 1 -b 4
003, -a 2 -b 2
004, -a 2 -b 4

这个想法是每组 args 可以在文件生成时配置,同时具有前导零作业编号。

这是我尝试过的一件事:

parallel --rpl '{0#} $_=sprintf("%02d",$job->seq())' echo {0#}, -a {1} -b {2} ::: 1 2 ::: 2 4

这会导致:

01 01, -a 1 -b 2
02 02, -a 1 -b 4
03 03, -a 2 -b 2
04 04, -a 2 -b 4

我没想到的结果是双组工作编号(使用 3 个扩展,它会产生 3 个工作编号)。关于如何使我正在尝试的工作有什么想法吗?

在 20170322 和 20210222 版本上测试。

相关帖子(试了每篇的内容):

【问题讨论】:

  • 我不知道答案,但解决方法可能是parallel 'printf -v z "%03d" {#}; echo $z -a {1} -b {2}' ::: 1 2 ::: 2 4
  • 或者,更简单的parallel 'printf "%03d, -a {1} -b {2}\n" {#}' ::: 1 2 ::: 2 4

标签: parallel-processing gnu-parallel


【解决方案1】:

类似这样的:

parallel --rpl '{0#} 1 $f=1+int((log(total_jobs())/log(10))); $_=sprintf("%0${f}d",seq())' echo '{0#}, -a {1} -b {2}' ::: {1..9} ::: {1..12}

1+int((log(total_jobs())/log(10))) 计算total_jobs() 的数字宽度。

【讨论】:

    猜你喜欢
    • 2020-10-10
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2018-05-03
    • 2017-05-27
    • 1970-01-01
    • 2012-08-17
    相关资源
    最近更新 更多