mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-21 21:47:54 +00:00
--plus: {slot-1}/{seq-1} = {%}-1/{#}-1 (count from 0).
This commit is contained in:
parent
b2ef182897
commit
fa129a592f
|
@ -504,6 +504,7 @@ env_parallel() {
|
||||||
`"
|
`"
|
||||||
fi
|
fi
|
||||||
export PARALLEL_ENV
|
export PARALLEL_ENV
|
||||||
|
# Free up some env space
|
||||||
unset _list_alias_BODIES _list_variable_VALUES _list_function_BODIES
|
unset _list_alias_BODIES _list_variable_VALUES _list_function_BODIES
|
||||||
unset _bodies_of_ALIASES _bodies_of_VARIABLES _bodies_of_FUNCTIONS
|
unset _bodies_of_ALIASES _bodies_of_VARIABLES _bodies_of_FUNCTIONS
|
||||||
unset _names_of_ALIASES _names_of_VARIABLES _names_of_FUNCTIONS
|
unset _names_of_ALIASES _names_of_VARIABLES _names_of_FUNCTIONS
|
||||||
|
|
10
src/parallel
10
src/parallel
|
@ -2842,12 +2842,16 @@ sub init_globals() {
|
||||||
'{uniq}' => 'if(::uniq(@arg) != @arg) { skip(); }',
|
'{uniq}' => 'if(::uniq(@arg) != @arg) { skip(); }',
|
||||||
# {##} = number of jobs
|
# {##} = number of jobs
|
||||||
'{##}' => '1 $_=total_jobs()',
|
'{##}' => '1 $_=total_jobs()',
|
||||||
|
# {0#} = 0-padded seq
|
||||||
|
'{0#}' => ('1 $f=1+int((log(total_jobs())/log(10)));'.
|
||||||
|
'$_=sprintf("%0${f}d",seq())'),
|
||||||
# {0%} = 0-padded jobslot
|
# {0%} = 0-padded jobslot
|
||||||
'{0%}' => ('1 $f=1+int((log($Global::max_jobs_running||1)/log(10)));'.
|
'{0%}' => ('1 $f=1+int((log($Global::max_jobs_running||1)/log(10)));'.
|
||||||
'$_=sprintf("%0${f}d",slot())'),
|
'$_=sprintf("%0${f}d",slot())'),
|
||||||
# {0%} = 0-padded seq
|
# {seq-1} = seq-1 = counting from 0
|
||||||
'{0#}' => ('1 $f=1+int((log(total_jobs())/log(10)));'.
|
'{seq(.*?)}' => '$_=eval q{$job->seq()}.qq{$$1}',
|
||||||
'$_=sprintf("%0${f}d",seq())'),
|
# {seq-1} = jobslot-1 = counting from 0
|
||||||
|
'{slot(.*?)}' => '$_=eval q{$job->slot()}.qq{$$1}',
|
||||||
|
|
||||||
## Bash inspired replacement strings
|
## Bash inspired replacement strings
|
||||||
# Bash ${a:-myval}
|
# Bash ${a:-myval}
|
||||||
|
|
|
@ -2041,6 +2041,10 @@ B<{0%}> zero-padded jobslot.
|
||||||
|
|
||||||
B<{0#}> zero-padded sequence number.
|
B<{0#}> zero-padded sequence number.
|
||||||
|
|
||||||
|
B<{slot-1}> jobslot - 1 (i.e. counting from 0).
|
||||||
|
|
||||||
|
B<{seq-1}> sequence number - 1 (i.e. counting from 0).
|
||||||
|
|
||||||
B<{choose_k}> is inspired by n choose k: Given a list of n elements,
|
B<{choose_k}> is inspired by n choose k: Given a list of n elements,
|
||||||
choose k. k is the number of input sources and n is the number of
|
choose k. k is the number of input sources and n is the number of
|
||||||
arguments in an input source. The content of the input sources must
|
arguments in an input source. The content of the input sources must
|
||||||
|
@ -2686,6 +2690,8 @@ The B<--plus> replacement strings are implemented as:
|
||||||
log(10))); $_=sprintf("%0${f}d",slot())'
|
log(10))); $_=sprintf("%0${f}d",slot())'
|
||||||
--rpl '{0#} 1 $f=1+int((log(total_jobs())/log(10)));
|
--rpl '{0#} 1 $f=1+int((log(total_jobs())/log(10)));
|
||||||
$_=sprintf("%0${f}d",seq())'
|
$_=sprintf("%0${f}d",seq())'
|
||||||
|
--rpl '{seq(.*?)} $_=eval q{$job->seq()}.qq{$$1}'
|
||||||
|
--rpl '{slot(.*?)} $_=eval q{$job->slot()}.qq{$$1}'
|
||||||
|
|
||||||
--rpl '{:-([^}]+?)} $_ ||= $$1'
|
--rpl '{:-([^}]+?)} $_ ||= $$1'
|
||||||
--rpl '{:(\d+?)} substr($_,0,$$1) = ""'
|
--rpl '{:(\d+?)} substr($_,0,$$1) = ""'
|
||||||
|
|
|
@ -416,9 +416,12 @@ par_sshdelay() {
|
||||||
par_plus_slot_replacement() {
|
par_plus_slot_replacement() {
|
||||||
echo '### show {slot} {0%} {0#}'
|
echo '### show {slot} {0%} {0#}'
|
||||||
parallel -k --plus 'sleep 0.{%};echo {slot}=$PARALLEL_JOBSLOT={%}' ::: A B C
|
parallel -k --plus 'sleep 0.{%};echo {slot}=$PARALLEL_JOBSLOT={%}' ::: A B C
|
||||||
parallel -j15 -k --plus 'echo Seq: {0#} {#}' ::: {1..100} | sort
|
doit() {
|
||||||
parallel -j15 -k --plus 'sleep 0.{}; echo Slot: {0%} {%}' ::: {1..100} |
|
parallel -j15 -k --plus "$@" ::: {1..100} | sort -u
|
||||||
sort -u
|
}
|
||||||
|
export -f doit
|
||||||
|
parallel doit ::: 'echo Seq: {0#} {#} {seq-1}*2={seq*2-2}' \
|
||||||
|
'sleep 0.{}; echo Slot: {0%} {%}={slot-1}+1'
|
||||||
}
|
}
|
||||||
|
|
||||||
par_replacement_slashslash() {
|
par_replacement_slashslash() {
|
||||||
|
|
|
@ -714,121 +714,121 @@ par_plus_slot_replacement ### show {slot} {0%} {0#}
|
||||||
par_plus_slot_replacement 1=1=1
|
par_plus_slot_replacement 1=1=1
|
||||||
par_plus_slot_replacement 2=2=2
|
par_plus_slot_replacement 2=2=2
|
||||||
par_plus_slot_replacement 3=3=3
|
par_plus_slot_replacement 3=3=3
|
||||||
par_plus_slot_replacement Seq: 001 1
|
par_plus_slot_replacement Seq: 001 1 0*2=0
|
||||||
par_plus_slot_replacement Seq: 002 2
|
par_plus_slot_replacement Seq: 002 2 1*2=2
|
||||||
par_plus_slot_replacement Seq: 003 3
|
par_plus_slot_replacement Seq: 003 3 2*2=4
|
||||||
par_plus_slot_replacement Seq: 004 4
|
par_plus_slot_replacement Seq: 004 4 3*2=6
|
||||||
par_plus_slot_replacement Seq: 005 5
|
par_plus_slot_replacement Seq: 005 5 4*2=8
|
||||||
par_plus_slot_replacement Seq: 006 6
|
par_plus_slot_replacement Seq: 006 6 5*2=10
|
||||||
par_plus_slot_replacement Seq: 007 7
|
par_plus_slot_replacement Seq: 007 7 6*2=12
|
||||||
par_plus_slot_replacement Seq: 008 8
|
par_plus_slot_replacement Seq: 008 8 7*2=14
|
||||||
par_plus_slot_replacement Seq: 009 9
|
par_plus_slot_replacement Seq: 009 9 8*2=16
|
||||||
par_plus_slot_replacement Seq: 010 10
|
par_plus_slot_replacement Seq: 010 10 9*2=18
|
||||||
par_plus_slot_replacement Seq: 011 11
|
par_plus_slot_replacement Seq: 011 11 10*2=20
|
||||||
par_plus_slot_replacement Seq: 012 12
|
par_plus_slot_replacement Seq: 012 12 11*2=22
|
||||||
par_plus_slot_replacement Seq: 013 13
|
par_plus_slot_replacement Seq: 013 13 12*2=24
|
||||||
par_plus_slot_replacement Seq: 014 14
|
par_plus_slot_replacement Seq: 014 14 13*2=26
|
||||||
par_plus_slot_replacement Seq: 015 15
|
par_plus_slot_replacement Seq: 015 15 14*2=28
|
||||||
par_plus_slot_replacement Seq: 016 16
|
par_plus_slot_replacement Seq: 016 16 15*2=30
|
||||||
par_plus_slot_replacement Seq: 017 17
|
par_plus_slot_replacement Seq: 017 17 16*2=32
|
||||||
par_plus_slot_replacement Seq: 018 18
|
par_plus_slot_replacement Seq: 018 18 17*2=34
|
||||||
par_plus_slot_replacement Seq: 019 19
|
par_plus_slot_replacement Seq: 019 19 18*2=36
|
||||||
par_plus_slot_replacement Seq: 020 20
|
par_plus_slot_replacement Seq: 020 20 19*2=38
|
||||||
par_plus_slot_replacement Seq: 021 21
|
par_plus_slot_replacement Seq: 021 21 20*2=40
|
||||||
par_plus_slot_replacement Seq: 022 22
|
par_plus_slot_replacement Seq: 022 22 21*2=42
|
||||||
par_plus_slot_replacement Seq: 023 23
|
par_plus_slot_replacement Seq: 023 23 22*2=44
|
||||||
par_plus_slot_replacement Seq: 024 24
|
par_plus_slot_replacement Seq: 024 24 23*2=46
|
||||||
par_plus_slot_replacement Seq: 025 25
|
par_plus_slot_replacement Seq: 025 25 24*2=48
|
||||||
par_plus_slot_replacement Seq: 026 26
|
par_plus_slot_replacement Seq: 026 26 25*2=50
|
||||||
par_plus_slot_replacement Seq: 027 27
|
par_plus_slot_replacement Seq: 027 27 26*2=52
|
||||||
par_plus_slot_replacement Seq: 028 28
|
par_plus_slot_replacement Seq: 028 28 27*2=54
|
||||||
par_plus_slot_replacement Seq: 029 29
|
par_plus_slot_replacement Seq: 029 29 28*2=56
|
||||||
par_plus_slot_replacement Seq: 030 30
|
par_plus_slot_replacement Seq: 030 30 29*2=58
|
||||||
par_plus_slot_replacement Seq: 031 31
|
par_plus_slot_replacement Seq: 031 31 30*2=60
|
||||||
par_plus_slot_replacement Seq: 032 32
|
par_plus_slot_replacement Seq: 032 32 31*2=62
|
||||||
par_plus_slot_replacement Seq: 033 33
|
par_plus_slot_replacement Seq: 033 33 32*2=64
|
||||||
par_plus_slot_replacement Seq: 034 34
|
par_plus_slot_replacement Seq: 034 34 33*2=66
|
||||||
par_plus_slot_replacement Seq: 035 35
|
par_plus_slot_replacement Seq: 035 35 34*2=68
|
||||||
par_plus_slot_replacement Seq: 036 36
|
par_plus_slot_replacement Seq: 036 36 35*2=70
|
||||||
par_plus_slot_replacement Seq: 037 37
|
par_plus_slot_replacement Seq: 037 37 36*2=72
|
||||||
par_plus_slot_replacement Seq: 038 38
|
par_plus_slot_replacement Seq: 038 38 37*2=74
|
||||||
par_plus_slot_replacement Seq: 039 39
|
par_plus_slot_replacement Seq: 039 39 38*2=76
|
||||||
par_plus_slot_replacement Seq: 040 40
|
par_plus_slot_replacement Seq: 040 40 39*2=78
|
||||||
par_plus_slot_replacement Seq: 041 41
|
par_plus_slot_replacement Seq: 041 41 40*2=80
|
||||||
par_plus_slot_replacement Seq: 042 42
|
par_plus_slot_replacement Seq: 042 42 41*2=82
|
||||||
par_plus_slot_replacement Seq: 043 43
|
par_plus_slot_replacement Seq: 043 43 42*2=84
|
||||||
par_plus_slot_replacement Seq: 044 44
|
par_plus_slot_replacement Seq: 044 44 43*2=86
|
||||||
par_plus_slot_replacement Seq: 045 45
|
par_plus_slot_replacement Seq: 045 45 44*2=88
|
||||||
par_plus_slot_replacement Seq: 046 46
|
par_plus_slot_replacement Seq: 046 46 45*2=90
|
||||||
par_plus_slot_replacement Seq: 047 47
|
par_plus_slot_replacement Seq: 047 47 46*2=92
|
||||||
par_plus_slot_replacement Seq: 048 48
|
par_plus_slot_replacement Seq: 048 48 47*2=94
|
||||||
par_plus_slot_replacement Seq: 049 49
|
par_plus_slot_replacement Seq: 049 49 48*2=96
|
||||||
par_plus_slot_replacement Seq: 050 50
|
par_plus_slot_replacement Seq: 050 50 49*2=98
|
||||||
par_plus_slot_replacement Seq: 051 51
|
par_plus_slot_replacement Seq: 051 51 50*2=100
|
||||||
par_plus_slot_replacement Seq: 052 52
|
par_plus_slot_replacement Seq: 052 52 51*2=102
|
||||||
par_plus_slot_replacement Seq: 053 53
|
par_plus_slot_replacement Seq: 053 53 52*2=104
|
||||||
par_plus_slot_replacement Seq: 054 54
|
par_plus_slot_replacement Seq: 054 54 53*2=106
|
||||||
par_plus_slot_replacement Seq: 055 55
|
par_plus_slot_replacement Seq: 055 55 54*2=108
|
||||||
par_plus_slot_replacement Seq: 056 56
|
par_plus_slot_replacement Seq: 056 56 55*2=110
|
||||||
par_plus_slot_replacement Seq: 057 57
|
par_plus_slot_replacement Seq: 057 57 56*2=112
|
||||||
par_plus_slot_replacement Seq: 058 58
|
par_plus_slot_replacement Seq: 058 58 57*2=114
|
||||||
par_plus_slot_replacement Seq: 059 59
|
par_plus_slot_replacement Seq: 059 59 58*2=116
|
||||||
par_plus_slot_replacement Seq: 060 60
|
par_plus_slot_replacement Seq: 060 60 59*2=118
|
||||||
par_plus_slot_replacement Seq: 061 61
|
par_plus_slot_replacement Seq: 061 61 60*2=120
|
||||||
par_plus_slot_replacement Seq: 062 62
|
par_plus_slot_replacement Seq: 062 62 61*2=122
|
||||||
par_plus_slot_replacement Seq: 063 63
|
par_plus_slot_replacement Seq: 063 63 62*2=124
|
||||||
par_plus_slot_replacement Seq: 064 64
|
par_plus_slot_replacement Seq: 064 64 63*2=126
|
||||||
par_plus_slot_replacement Seq: 065 65
|
par_plus_slot_replacement Seq: 065 65 64*2=128
|
||||||
par_plus_slot_replacement Seq: 066 66
|
par_plus_slot_replacement Seq: 066 66 65*2=130
|
||||||
par_plus_slot_replacement Seq: 067 67
|
par_plus_slot_replacement Seq: 067 67 66*2=132
|
||||||
par_plus_slot_replacement Seq: 068 68
|
par_plus_slot_replacement Seq: 068 68 67*2=134
|
||||||
par_plus_slot_replacement Seq: 069 69
|
par_plus_slot_replacement Seq: 069 69 68*2=136
|
||||||
par_plus_slot_replacement Seq: 070 70
|
par_plus_slot_replacement Seq: 070 70 69*2=138
|
||||||
par_plus_slot_replacement Seq: 071 71
|
par_plus_slot_replacement Seq: 071 71 70*2=140
|
||||||
par_plus_slot_replacement Seq: 072 72
|
par_plus_slot_replacement Seq: 072 72 71*2=142
|
||||||
par_plus_slot_replacement Seq: 073 73
|
par_plus_slot_replacement Seq: 073 73 72*2=144
|
||||||
par_plus_slot_replacement Seq: 074 74
|
par_plus_slot_replacement Seq: 074 74 73*2=146
|
||||||
par_plus_slot_replacement Seq: 075 75
|
par_plus_slot_replacement Seq: 075 75 74*2=148
|
||||||
par_plus_slot_replacement Seq: 076 76
|
par_plus_slot_replacement Seq: 076 76 75*2=150
|
||||||
par_plus_slot_replacement Seq: 077 77
|
par_plus_slot_replacement Seq: 077 77 76*2=152
|
||||||
par_plus_slot_replacement Seq: 078 78
|
par_plus_slot_replacement Seq: 078 78 77*2=154
|
||||||
par_plus_slot_replacement Seq: 079 79
|
par_plus_slot_replacement Seq: 079 79 78*2=156
|
||||||
par_plus_slot_replacement Seq: 080 80
|
par_plus_slot_replacement Seq: 080 80 79*2=158
|
||||||
par_plus_slot_replacement Seq: 081 81
|
par_plus_slot_replacement Seq: 081 81 80*2=160
|
||||||
par_plus_slot_replacement Seq: 082 82
|
par_plus_slot_replacement Seq: 082 82 81*2=162
|
||||||
par_plus_slot_replacement Seq: 083 83
|
par_plus_slot_replacement Seq: 083 83 82*2=164
|
||||||
par_plus_slot_replacement Seq: 084 84
|
par_plus_slot_replacement Seq: 084 84 83*2=166
|
||||||
par_plus_slot_replacement Seq: 085 85
|
par_plus_slot_replacement Seq: 085 85 84*2=168
|
||||||
par_plus_slot_replacement Seq: 086 86
|
par_plus_slot_replacement Seq: 086 86 85*2=170
|
||||||
par_plus_slot_replacement Seq: 087 87
|
par_plus_slot_replacement Seq: 087 87 86*2=172
|
||||||
par_plus_slot_replacement Seq: 088 88
|
par_plus_slot_replacement Seq: 088 88 87*2=174
|
||||||
par_plus_slot_replacement Seq: 089 89
|
par_plus_slot_replacement Seq: 089 89 88*2=176
|
||||||
par_plus_slot_replacement Seq: 090 90
|
par_plus_slot_replacement Seq: 090 90 89*2=178
|
||||||
par_plus_slot_replacement Seq: 091 91
|
par_plus_slot_replacement Seq: 091 91 90*2=180
|
||||||
par_plus_slot_replacement Seq: 092 92
|
par_plus_slot_replacement Seq: 092 92 91*2=182
|
||||||
par_plus_slot_replacement Seq: 093 93
|
par_plus_slot_replacement Seq: 093 93 92*2=184
|
||||||
par_plus_slot_replacement Seq: 094 94
|
par_plus_slot_replacement Seq: 094 94 93*2=186
|
||||||
par_plus_slot_replacement Seq: 095 95
|
par_plus_slot_replacement Seq: 095 95 94*2=188
|
||||||
par_plus_slot_replacement Seq: 096 96
|
par_plus_slot_replacement Seq: 096 96 95*2=190
|
||||||
par_plus_slot_replacement Seq: 097 97
|
par_plus_slot_replacement Seq: 097 97 96*2=192
|
||||||
par_plus_slot_replacement Seq: 098 98
|
par_plus_slot_replacement Seq: 098 98 97*2=194
|
||||||
par_plus_slot_replacement Seq: 099 99
|
par_plus_slot_replacement Seq: 099 99 98*2=196
|
||||||
par_plus_slot_replacement Seq: 100 100
|
par_plus_slot_replacement Seq: 100 100 99*2=198
|
||||||
par_plus_slot_replacement Slot: 01 1
|
par_plus_slot_replacement Slot: 01 1=0+1
|
||||||
par_plus_slot_replacement Slot: 02 2
|
par_plus_slot_replacement Slot: 02 2=1+1
|
||||||
par_plus_slot_replacement Slot: 03 3
|
par_plus_slot_replacement Slot: 03 3=2+1
|
||||||
par_plus_slot_replacement Slot: 04 4
|
par_plus_slot_replacement Slot: 04 4=3+1
|
||||||
par_plus_slot_replacement Slot: 05 5
|
par_plus_slot_replacement Slot: 05 5=4+1
|
||||||
par_plus_slot_replacement Slot: 06 6
|
par_plus_slot_replacement Slot: 06 6=5+1
|
||||||
par_plus_slot_replacement Slot: 07 7
|
par_plus_slot_replacement Slot: 07 7=6+1
|
||||||
par_plus_slot_replacement Slot: 08 8
|
par_plus_slot_replacement Slot: 08 8=7+1
|
||||||
par_plus_slot_replacement Slot: 09 9
|
par_plus_slot_replacement Slot: 09 9=8+1
|
||||||
par_plus_slot_replacement Slot: 10 10
|
par_plus_slot_replacement Slot: 10 10=9+1
|
||||||
par_plus_slot_replacement Slot: 11 11
|
par_plus_slot_replacement Slot: 11 11=10+1
|
||||||
par_plus_slot_replacement Slot: 12 12
|
par_plus_slot_replacement Slot: 12 12=11+1
|
||||||
par_plus_slot_replacement Slot: 13 13
|
par_plus_slot_replacement Slot: 13 13=12+1
|
||||||
par_plus_slot_replacement Slot: 14 14
|
par_plus_slot_replacement Slot: 14 14=13+1
|
||||||
par_plus_slot_replacement Slot: 15 15
|
par_plus_slot_replacement Slot: 15 15=14+1
|
||||||
par_process_slot_var ### bug #62310: xargs compatibility: --process-slot-var=name
|
par_process_slot_var ### bug #62310: xargs compatibility: --process-slot-var=name
|
||||||
par_process_slot_var 0
|
par_process_slot_var 0
|
||||||
par_process_slot_var 1
|
par_process_slot_var 1
|
||||||
|
|
Loading…
Reference in a new issue