parallel: --pipepart --groupby implemented.

This commit is contained in:
Ole Tange 2019-05-22 21:57:08 +02:00
parent aa62104eb5
commit c25ae9cc87
8 changed files with 573 additions and 42 deletions

View file

@ -588,12 +588,12 @@ sub split_positions_for_group_by($$$$) {
if(defined $_) {
# Not end of file
my @F;
if(defined $Global::group_by_column) {
if(defined $group_by::col) {
$opt::colsep ||= "\t";
@F = split /$opt::colsep/, $_;
$_ = $F[$Global::group_by_column];
$_ = $F[$group_by::col];
}
eval $Global::group_by_perlexpr;
eval $group_by::perlexpr;
}
return ($_,$linepos);
}
@ -641,7 +641,7 @@ sub split_positions_for_group_by($$$$) {
my @pos;
$fh = open_or_exit($file);
# Set $Global::group_by_column $Global::group_by_perlexpr
group_by_loop($opt::recsep);
group_by_loop($fh,$opt::recsep);
# $xpos = linestart, $x = value at $xpos, $apos < $bpos < $cpos
$apos = length $header;
for(($a,$apos) = value_at($apos); $apos < $size;) {
@ -718,45 +718,67 @@ sub cat_partial($@) {
" perl -e '$script' @start_len |";
}
sub group_by_loop($) {
# Generate perl code for group-by loop
# Insert a $recsep when the column value changes
# The column value can be computed with $perexpr
my($recsep) = @_;
my $groupby = $opt::groupby;
my ($col,$perlexpr);
if($groupby =~ /^[a-z0-9_]+(\s|$)/i) {
sub column_perlexpr($$$) {
# Compute the column number (if any), perlexpression from combined
# string (such as --shard key, --groupby key, {=n perlexpr=}
# Input:
# $column_perlexpr = string with column and perl expression
# $header = header from input file (if column is column name)
# $colsep = column separator regexp
# Returns:
# $col = column number
# $perlexpr = perl expression
# $subref = compiled perl expression as sub reference
my ($column_perlexpr, $header, $colsep) = @_;
my ($col, $perlexpr, $subref);
if($column_perlexpr =~ /^[-a-z0-9_]+(\s|$)/i) {
# Column name/number (possibly prefix)
if($groupby =~ s/^(\d+)\s*//) {
if($column_perlexpr =~ s/^(-?\d+)(\s|$)//) {
# Column number (possibly prefix)
$col = $1-1;
} elsif($groupby =~ s/^([a-z0-9_]+)\s*//i) {
$col = $1;
} elsif($column_perlexpr =~ s/^([a-z0-9_]+)(\s+|$)//i) {
# Column name (possibly prefix)
my $colname = $1;
my($read,$char,@line,$header);
# A full line, but nothing more (the rest must be read by the child)
do {
$read = sysread(STDIN,$char,1);
push @line, $char;
} while($read and $char ne "\n");
# $Global::header used to prepend block to each job
$Global::header = join "", @line;
# Split on --copsep pattern
my @headers = split/$opt::colsep/, $Global::header;
my @headers = split /$colsep/, $header;
my %headers;
# Numbered 0..n-1 due to being used by $F[n]
@headers{@headers} = (0..$#headers);
@headers{@headers} = (1..($#headers+1));
$col = $headers{$colname};
if(not defined $col) {
::error("Column '$colname' $opt::colsep not found in header",keys %headers);
::error("Column '$colname' $colsep not found in header",keys %headers);
::wait_and_exit(255);
}
}
}
# What is left of $groupby is $perlexpr
$perlexpr = $groupby;
$Global::group_by_perlexpr = $perlexpr;
$Global::group_by_column = $col;
# What is left of $column_perlexpr is $perlexpr (possibly empty)
$perlexpr = $column_perlexpr;
$subref = eval("sub { no strict; no warnings; $perlexpr }");
return($col, $perlexpr, $subref);
}
sub group_by_loop($$) {
# Generate perl code for group-by loop
# Insert a $recsep when the column value changes
# The column value can be computed with $perexpr
my($fh,$recsep) = @_;
my $groupby = $opt::groupby;
if($groupby =~ /^[a-z_][a-z_0-9]*(\s|$)/i) {
# Group by column name
# (Yes, this will also wrongly match a perlexpr like: chop)
my($read,$char,@line);
# A full line, but nothing more (the rest must be read by the child)
# $Global::header used to prepend block to each job
do {
$read = sysread($fh,$char,1);
push @line, $char;
} while($read and $char ne "\n");
$Global::header = join "", @line;
}
$opt::colsep ||= "\t";
($group_by::col, $group_by::perlexpr, $group_by::subref) =
column_perlexpr($groupby, $Global::header, $opt::colsep);
# Numbered 0..n-1 due to being used by $F[n]
if($group_by::col) { $group_by::col--; }
my $loop = ::spacefree(0,'{
local $_=COLVALUE;
@ -768,12 +790,12 @@ sub group_by_loop($) {
}
}');
if(defined $col) {
$loop =~ s/COLVALUE/\$F[$col]/g;
if(defined $group_by::col) {
$loop =~ s/COLVALUE/\$F[$group_by::col]/g;
} else {
$loop =~ s/COLVALUE/\$_/g;
}
$loop =~ s/PERLEXPR/$perlexpr/g;
$loop =~ s/PERLEXPR/$group_by::perlexpr/g;
$loop =~ s/RECSEP/$recsep/g;
return $loop;
}
@ -797,7 +819,7 @@ sub group_by_stdin_filter() {
push @filter, "-F$sep";
}
push @filter, "-pe";
push @filter, group_by_loop($opt::recstart);
push @filter, group_by_loop(*STDIN,$opt::recstart);
::debug("init", "@filter\n");
open(STDIN, '-|', @filter) || die ("Cannot start @filter");
}

View file

@ -2155,18 +2155,18 @@ Only supported in B<Ash, Bash, Dash, Ksh, Sh, and Zsh>.
See also B<--env>, B<--record-env>.
=item B<--shard> I<shardkey> (beta testing)
=item B<--shard> I<shardcol> (beta testing)
Use column I<shardkey> as shard key and shard input to the jobs.
Use column I<shardcol> as shard key and shard input to the jobs.
Each input line is split using B<--colsep>. The value in the
I<shardkey> column is hashed so that all lines of a given value is
I<shardcol> column is hashed so that all lines of a given value is
given to the same job slot.
This is similar to sharding in databases.
The performance is in the order of 100K rows per second. Faster if the
I<shardkey> is small (<10), slower if it is big (>100).
I<shardcol> is small (<10), slower if it is big (>100).
B<--shard> requires B<--pipe> and a fixed numeric value for B<--jobs>.
@ -2970,6 +2970,14 @@ Find the files in a list that do not exist
cat file_list | parallel 'if [ ! -e {} ] ; then echo {}; fi'
=head1 EXAMPLE: Composed command with perl replacement string
You have a bunch of file. You want them sorted into dirs. The dir of
each file should be named the first letter of the file name.
parallel 'mkdir -p {=s/(.).*/$1/=}; mv {} {=s/(.).*/$1/=}' ::: *
=head1 EXAMPLE: Composed command with multiple input sources
You have a dir with files named as 24 hours in 5 minute intervals:

View file

@ -679,7 +679,7 @@ par_pipe_N1_regexp() {
par_sem_quote() {
echo '### sem --quote should not add empty argument'
sem --fg --quote -v echo
sem --id sem_quote --fg --quote -v echo
}
par_halt_on_error_division_by_zero() {

View file

@ -453,6 +453,49 @@ par_groupby() {
# Test --colsep --header : (OK: --header : not needed)
}
par_groupby_pipepart() {
tsv() {
printf "%s\t" a1 b1 c1 d1 e1 f1; echo
seq 100000 999999 | perl -pe '$_=join"\t",split//' |
sort --parallel=8 --buffer-size=50% -rk3
}
export -f tsv
ssv() {
# space separated
tsv | perl -pe '@sep=("\t"," "); s/\t/$sep[rand(2)]/ge;'
}
export -f ssv
cssv() {
# , + space separated
tsv | perl -pe '@sep=("\t"," ",","); s/\t/$sep[rand(2)].$sep[rand(2)]/ge;'
}
export -f cssv
csv() {
# , separated
tsv | perl -pe 's/\t/,/g;'
}
export -f csv
tester() {
generator="$1"
colsep="$2"
groupby="$3"
tmp=`tempfile`
echo "### test $generator | --colsep $colsep --groupby $groupby"
$generator > $tmp
parallel --pipepart -a $tmp --colsep "$colsep" --groupby "$groupby" -k 'echo NewRec; wc'
}
export -f tester
parallel --tag -k tester \
::: tsv ssv cssv csv \
:::+ '\t' '\s+' '[\s,]+' ',' \
::: '3 $_%=2' 3 c1 'c1 $_%=2' 's/^(\d+[\t ,]+){2}(\d+).*/$2/'
}
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | LC_ALL=C sort |
parallel -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'

View file

@ -162,7 +162,7 @@ echo '### Test {#.}'
$XAP -kv -a <(echo a-noext) -a <(echo b-withext.extension) -a <(echo c-ext.gif) echo {3.} {2.} {1.}
echo "### Tests that failed for OO-rewrite"
parallel -u --semaphore seq 1 10 '|' pv -qL 20; sem --wait; echo done
parallel -u --semaphore --id local9 seq 1 10 '|' pv -qL 20; sem --id local9 --wait; echo done
echo a | parallel echo {1}
echo "echo a" | parallel
nice parallel -j1 -I :: -X echo 'a::b::^c::[.}c' ::: 1

View file

@ -647,6 +647,450 @@ par_groupby --block 20 C1 $_%=2 csv , parallel: Warning: A record was longer tha
par_groupby --block 20 C1 $_%=2 csv , parallel: Warning: A record was longer than 27. Increasing to --blocksize 37.
par_groupby --block 20 C1 $_%=2 csv , parallel: Warning: A record was longer than 37. Increasing to --blocksize 50.
par_groupby --block 20 C1 $_%=2 csv , parallel: Warning: A record was longer than 50. Increasing to --blocksize 66.
par_groupby_pipepart tsv \t 3 $_%=2 ### test tsv | --colsep \t --groupby 3 $_%=2
par_groupby_pipepart tsv \t 3 $_%=2 NewRec
par_groupby_pipepart tsv \t 3 $_%=2 1 6 19
par_groupby_pipepart tsv \t 3 $_%=2 NewRec
par_groupby_pipepart tsv \t 3 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t 3 $_%=2 NewRec
par_groupby_pipepart tsv \t 3 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t 3 $_%=2 NewRec
par_groupby_pipepart tsv \t 3 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t 3 $_%=2 NewRec
par_groupby_pipepart tsv \t 3 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t 3 $_%=2 NewRec
par_groupby_pipepart tsv \t 3 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t 3 $_%=2 NewRec
par_groupby_pipepart tsv \t 3 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t 3 $_%=2 NewRec
par_groupby_pipepart tsv \t 3 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t 3 $_%=2 NewRec
par_groupby_pipepart tsv \t 3 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t 3 $_%=2 NewRec
par_groupby_pipepart tsv \t 3 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t 3 $_%=2 NewRec
par_groupby_pipepart tsv \t 3 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t 3 ### test tsv | --colsep \t --groupby 3
par_groupby_pipepart tsv \t 3 NewRec
par_groupby_pipepart tsv \t 3 1 6 19
par_groupby_pipepart tsv \t 3 NewRec
par_groupby_pipepart tsv \t 3 90000 540000 1170000
par_groupby_pipepart tsv \t 3 NewRec
par_groupby_pipepart tsv \t 3 90000 540000 1170000
par_groupby_pipepart tsv \t 3 NewRec
par_groupby_pipepart tsv \t 3 90000 540000 1170000
par_groupby_pipepart tsv \t 3 NewRec
par_groupby_pipepart tsv \t 3 90000 540000 1170000
par_groupby_pipepart tsv \t 3 NewRec
par_groupby_pipepart tsv \t 3 90000 540000 1170000
par_groupby_pipepart tsv \t 3 NewRec
par_groupby_pipepart tsv \t 3 90000 540000 1170000
par_groupby_pipepart tsv \t 3 NewRec
par_groupby_pipepart tsv \t 3 90000 540000 1170000
par_groupby_pipepart tsv \t 3 NewRec
par_groupby_pipepart tsv \t 3 90000 540000 1170000
par_groupby_pipepart tsv \t 3 NewRec
par_groupby_pipepart tsv \t 3 90000 540000 1170000
par_groupby_pipepart tsv \t 3 NewRec
par_groupby_pipepart tsv \t 3 90000 540000 1170000
par_groupby_pipepart tsv \t c1 ### test tsv | --colsep \t --groupby c1
par_groupby_pipepart tsv \t c1 NewRec
par_groupby_pipepart tsv \t c1 90001 540006 1170019
par_groupby_pipepart tsv \t c1 NewRec
par_groupby_pipepart tsv \t c1 90000 540000 1170000
par_groupby_pipepart tsv \t c1 NewRec
par_groupby_pipepart tsv \t c1 90000 540000 1170000
par_groupby_pipepart tsv \t c1 NewRec
par_groupby_pipepart tsv \t c1 90000 540000 1170000
par_groupby_pipepart tsv \t c1 NewRec
par_groupby_pipepart tsv \t c1 90000 540000 1170000
par_groupby_pipepart tsv \t c1 NewRec
par_groupby_pipepart tsv \t c1 90000 540000 1170000
par_groupby_pipepart tsv \t c1 NewRec
par_groupby_pipepart tsv \t c1 90000 540000 1170000
par_groupby_pipepart tsv \t c1 NewRec
par_groupby_pipepart tsv \t c1 90000 540000 1170000
par_groupby_pipepart tsv \t c1 NewRec
par_groupby_pipepart tsv \t c1 90000 540000 1170000
par_groupby_pipepart tsv \t c1 NewRec
par_groupby_pipepart tsv \t c1 90000 540000 1170000
par_groupby_pipepart tsv \t c1 $_%=2 ### test tsv | --colsep \t --groupby c1 $_%=2
par_groupby_pipepart tsv \t c1 $_%=2 NewRec
par_groupby_pipepart tsv \t c1 $_%=2 90001 540006 1170019
par_groupby_pipepart tsv \t c1 $_%=2 NewRec
par_groupby_pipepart tsv \t c1 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t c1 $_%=2 NewRec
par_groupby_pipepart tsv \t c1 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t c1 $_%=2 NewRec
par_groupby_pipepart tsv \t c1 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t c1 $_%=2 NewRec
par_groupby_pipepart tsv \t c1 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t c1 $_%=2 NewRec
par_groupby_pipepart tsv \t c1 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t c1 $_%=2 NewRec
par_groupby_pipepart tsv \t c1 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t c1 $_%=2 NewRec
par_groupby_pipepart tsv \t c1 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t c1 $_%=2 NewRec
par_groupby_pipepart tsv \t c1 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t c1 $_%=2 NewRec
par_groupby_pipepart tsv \t c1 $_%=2 90000 540000 1170000
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ ### test tsv | --colsep \t --groupby s/^(\d+[\t ,]+){2}(\d+).*/$2/
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ 1 6 19
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart tsv \t s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 $_%=2 ### test ssv | --colsep \s+ --groupby 3 $_%=2
par_groupby_pipepart ssv \s+ 3 $_%=2 NewRec
par_groupby_pipepart ssv \s+ 3 $_%=2 1 6 19
par_groupby_pipepart ssv \s+ 3 $_%=2 NewRec
par_groupby_pipepart ssv \s+ 3 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 $_%=2 NewRec
par_groupby_pipepart ssv \s+ 3 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 $_%=2 NewRec
par_groupby_pipepart ssv \s+ 3 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 $_%=2 NewRec
par_groupby_pipepart ssv \s+ 3 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 $_%=2 NewRec
par_groupby_pipepart ssv \s+ 3 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 $_%=2 NewRec
par_groupby_pipepart ssv \s+ 3 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 $_%=2 NewRec
par_groupby_pipepart ssv \s+ 3 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 $_%=2 NewRec
par_groupby_pipepart ssv \s+ 3 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 $_%=2 NewRec
par_groupby_pipepart ssv \s+ 3 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 $_%=2 NewRec
par_groupby_pipepart ssv \s+ 3 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 ### test ssv | --colsep \s+ --groupby 3
par_groupby_pipepart ssv \s+ 3 NewRec
par_groupby_pipepart ssv \s+ 3 1 6 19
par_groupby_pipepart ssv \s+ 3 NewRec
par_groupby_pipepart ssv \s+ 3 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 NewRec
par_groupby_pipepart ssv \s+ 3 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 NewRec
par_groupby_pipepart ssv \s+ 3 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 NewRec
par_groupby_pipepart ssv \s+ 3 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 NewRec
par_groupby_pipepart ssv \s+ 3 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 NewRec
par_groupby_pipepart ssv \s+ 3 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 NewRec
par_groupby_pipepart ssv \s+ 3 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 NewRec
par_groupby_pipepart ssv \s+ 3 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 NewRec
par_groupby_pipepart ssv \s+ 3 90000 540000 1170000
par_groupby_pipepart ssv \s+ 3 NewRec
par_groupby_pipepart ssv \s+ 3 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 ### test ssv | --colsep \s+ --groupby c1
par_groupby_pipepart ssv \s+ c1 NewRec
par_groupby_pipepart ssv \s+ c1 90001 540006 1170019
par_groupby_pipepart ssv \s+ c1 NewRec
par_groupby_pipepart ssv \s+ c1 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 NewRec
par_groupby_pipepart ssv \s+ c1 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 NewRec
par_groupby_pipepart ssv \s+ c1 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 NewRec
par_groupby_pipepart ssv \s+ c1 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 NewRec
par_groupby_pipepart ssv \s+ c1 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 NewRec
par_groupby_pipepart ssv \s+ c1 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 NewRec
par_groupby_pipepart ssv \s+ c1 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 NewRec
par_groupby_pipepart ssv \s+ c1 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 NewRec
par_groupby_pipepart ssv \s+ c1 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 $_%=2 ### test ssv | --colsep \s+ --groupby c1 $_%=2
par_groupby_pipepart ssv \s+ c1 $_%=2 NewRec
par_groupby_pipepart ssv \s+ c1 $_%=2 90001 540006 1170019
par_groupby_pipepart ssv \s+ c1 $_%=2 NewRec
par_groupby_pipepart ssv \s+ c1 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 $_%=2 NewRec
par_groupby_pipepart ssv \s+ c1 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 $_%=2 NewRec
par_groupby_pipepart ssv \s+ c1 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 $_%=2 NewRec
par_groupby_pipepart ssv \s+ c1 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 $_%=2 NewRec
par_groupby_pipepart ssv \s+ c1 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 $_%=2 NewRec
par_groupby_pipepart ssv \s+ c1 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 $_%=2 NewRec
par_groupby_pipepart ssv \s+ c1 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 $_%=2 NewRec
par_groupby_pipepart ssv \s+ c1 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ c1 $_%=2 NewRec
par_groupby_pipepart ssv \s+ c1 $_%=2 90000 540000 1170000
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ ### test ssv | --colsep \s+ --groupby s/^(\d+[\t ,]+){2}(\d+).*/$2/
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 1 6 19
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart ssv \s+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1170000
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 ### test cssv | --colsep [\s,]+ --groupby 3 $_%=2
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 1 6 25
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ 3 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 ### test cssv | --colsep [\s,]+ --groupby 3
par_groupby_pipepart cssv [\s,]+ 3 NewRec
par_groupby_pipepart cssv [\s,]+ 3 1 6 25
par_groupby_pipepart cssv [\s,]+ 3 NewRec
par_groupby_pipepart cssv [\s,]+ 3 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 NewRec
par_groupby_pipepart cssv [\s,]+ 3 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 NewRec
par_groupby_pipepart cssv [\s,]+ 3 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 NewRec
par_groupby_pipepart cssv [\s,]+ 3 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 NewRec
par_groupby_pipepart cssv [\s,]+ 3 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 NewRec
par_groupby_pipepart cssv [\s,]+ 3 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 NewRec
par_groupby_pipepart cssv [\s,]+ 3 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 NewRec
par_groupby_pipepart cssv [\s,]+ 3 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 NewRec
par_groupby_pipepart cssv [\s,]+ 3 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ 3 NewRec
par_groupby_pipepart cssv [\s,]+ 3 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 ### test cssv | --colsep [\s,]+ --groupby c1
par_groupby_pipepart cssv [\s,]+ c1 NewRec
par_groupby_pipepart cssv [\s,]+ c1 90001 540006 1710025
par_groupby_pipepart cssv [\s,]+ c1 NewRec
par_groupby_pipepart cssv [\s,]+ c1 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 NewRec
par_groupby_pipepart cssv [\s,]+ c1 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 NewRec
par_groupby_pipepart cssv [\s,]+ c1 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 NewRec
par_groupby_pipepart cssv [\s,]+ c1 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 NewRec
par_groupby_pipepart cssv [\s,]+ c1 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 NewRec
par_groupby_pipepart cssv [\s,]+ c1 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 NewRec
par_groupby_pipepart cssv [\s,]+ c1 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 NewRec
par_groupby_pipepart cssv [\s,]+ c1 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 NewRec
par_groupby_pipepart cssv [\s,]+ c1 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 ### test cssv | --colsep [\s,]+ --groupby c1 $_%=2
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 90001 540006 1710025
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 NewRec
par_groupby_pipepart cssv [\s,]+ c1 $_%=2 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ ### test cssv | --colsep [\s,]+ --groupby s/^(\d+[\t ,]+){2}(\d+).*/$2/
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 1 6 25
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1710000
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart cssv [\s,]+ s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 540000 1710000
par_groupby_pipepart csv , 3 $_%=2 ### test csv | --colsep , --groupby 3 $_%=2
par_groupby_pipepart csv , 3 $_%=2 NewRec
par_groupby_pipepart csv , 3 $_%=2 1 1 19
par_groupby_pipepart csv , 3 $_%=2 NewRec
par_groupby_pipepart csv , 3 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , 3 $_%=2 NewRec
par_groupby_pipepart csv , 3 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , 3 $_%=2 NewRec
par_groupby_pipepart csv , 3 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , 3 $_%=2 NewRec
par_groupby_pipepart csv , 3 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , 3 $_%=2 NewRec
par_groupby_pipepart csv , 3 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , 3 $_%=2 NewRec
par_groupby_pipepart csv , 3 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , 3 $_%=2 NewRec
par_groupby_pipepart csv , 3 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , 3 $_%=2 NewRec
par_groupby_pipepart csv , 3 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , 3 $_%=2 NewRec
par_groupby_pipepart csv , 3 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , 3 $_%=2 NewRec
par_groupby_pipepart csv , 3 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , 3 ### test csv | --colsep , --groupby 3
par_groupby_pipepart csv , 3 NewRec
par_groupby_pipepart csv , 3 1 1 19
par_groupby_pipepart csv , 3 NewRec
par_groupby_pipepart csv , 3 90000 90000 1170000
par_groupby_pipepart csv , 3 NewRec
par_groupby_pipepart csv , 3 90000 90000 1170000
par_groupby_pipepart csv , 3 NewRec
par_groupby_pipepart csv , 3 90000 90000 1170000
par_groupby_pipepart csv , 3 NewRec
par_groupby_pipepart csv , 3 90000 90000 1170000
par_groupby_pipepart csv , 3 NewRec
par_groupby_pipepart csv , 3 90000 90000 1170000
par_groupby_pipepart csv , 3 NewRec
par_groupby_pipepart csv , 3 90000 90000 1170000
par_groupby_pipepart csv , 3 NewRec
par_groupby_pipepart csv , 3 90000 90000 1170000
par_groupby_pipepart csv , 3 NewRec
par_groupby_pipepart csv , 3 90000 90000 1170000
par_groupby_pipepart csv , 3 NewRec
par_groupby_pipepart csv , 3 90000 90000 1170000
par_groupby_pipepart csv , 3 NewRec
par_groupby_pipepart csv , 3 90000 90000 1170000
par_groupby_pipepart csv , c1 ### test csv | --colsep , --groupby c1
par_groupby_pipepart csv , c1 NewRec
par_groupby_pipepart csv , c1 90001 90001 1170019
par_groupby_pipepart csv , c1 NewRec
par_groupby_pipepart csv , c1 90000 90000 1170000
par_groupby_pipepart csv , c1 NewRec
par_groupby_pipepart csv , c1 90000 90000 1170000
par_groupby_pipepart csv , c1 NewRec
par_groupby_pipepart csv , c1 90000 90000 1170000
par_groupby_pipepart csv , c1 NewRec
par_groupby_pipepart csv , c1 90000 90000 1170000
par_groupby_pipepart csv , c1 NewRec
par_groupby_pipepart csv , c1 90000 90000 1170000
par_groupby_pipepart csv , c1 NewRec
par_groupby_pipepart csv , c1 90000 90000 1170000
par_groupby_pipepart csv , c1 NewRec
par_groupby_pipepart csv , c1 90000 90000 1170000
par_groupby_pipepart csv , c1 NewRec
par_groupby_pipepart csv , c1 90000 90000 1170000
par_groupby_pipepart csv , c1 NewRec
par_groupby_pipepart csv , c1 90000 90000 1170000
par_groupby_pipepart csv , c1 $_%=2 ### test csv | --colsep , --groupby c1 $_%=2
par_groupby_pipepart csv , c1 $_%=2 NewRec
par_groupby_pipepart csv , c1 $_%=2 90001 90001 1170019
par_groupby_pipepart csv , c1 $_%=2 NewRec
par_groupby_pipepart csv , c1 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , c1 $_%=2 NewRec
par_groupby_pipepart csv , c1 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , c1 $_%=2 NewRec
par_groupby_pipepart csv , c1 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , c1 $_%=2 NewRec
par_groupby_pipepart csv , c1 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , c1 $_%=2 NewRec
par_groupby_pipepart csv , c1 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , c1 $_%=2 NewRec
par_groupby_pipepart csv , c1 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , c1 $_%=2 NewRec
par_groupby_pipepart csv , c1 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , c1 $_%=2 NewRec
par_groupby_pipepart csv , c1 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , c1 $_%=2 NewRec
par_groupby_pipepart csv , c1 $_%=2 90000 90000 1170000
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ ### test csv | --colsep , --groupby s/^(\d+[\t ,]+){2}(\d+).*/$2/
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ 1 1 19
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 90000 1170000
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 90000 1170000
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 90000 1170000
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 90000 1170000
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 90000 1170000
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 90000 1170000
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 90000 1170000
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 90000 1170000
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 90000 1170000
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ NewRec
par_groupby_pipepart csv , s/^(\d+[\t ,]+){2}(\d+).*/$2/ 90000 90000 1170000
par_jobslot_repl bug #46232: {%} with --bar/--eta/--shuf or --halt xx% broken
par_jobslot_repl 1
par_jobslot_repl 2

View file

@ -369,7 +369,7 @@ echo c-ext b-withext a-noext
c-ext b-withext a-noext
echo "### Tests that failed for OO-rewrite"
### Tests that failed for OO-rewrite
parallel -u --semaphore seq 1 10 '|' pv -qL 20; sem --wait; echo done
parallel -u --semaphore --id local9 seq 1 10 '|' pv -qL 20; sem --id local9 --wait; echo done
1
2
3

View file

@ -38,6 +38,7 @@ bin/parallel netbsd copy netbsd bin/parallel parallel
bin/parallel openbsd copy openbsd bin/parallel parallel
bin/parallel freebsd copy freebsd bin/parallel parallel
bin/parallel debian copy debian bin/parallel parallel
bin/parallel hurd copy hurd bin/parallel parallel
bin/parallel minix copy minix bin/parallel parallel
bin/env_parallel qnx copy qnx bin/env_parallel env_parallel
bin/env_parallel pidora copy pidora bin/env_parallel env_parallel
@ -63,6 +64,7 @@ bin/env_parallel netbsd copy netbsd bin/env_parallel env_parallel
bin/env_parallel openbsd copy openbsd bin/env_parallel env_parallel
bin/env_parallel freebsd copy freebsd bin/env_parallel env_parallel
bin/env_parallel debian copy debian bin/env_parallel env_parallel
bin/env_parallel hurd copy hurd bin/env_parallel env_parallel
bin/env_parallel minix copy minix bin/env_parallel env_parallel
bin/env_parallel.ash qnx copy qnx bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash pidora copy pidora bin/env_parallel.ash env_parallel.ash
@ -88,6 +90,7 @@ bin/env_parallel.ash netbsd copy netbsd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash openbsd copy openbsd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash freebsd copy freebsd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash debian copy debian bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash hurd copy hurd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash minix copy minix bin/env_parallel.ash env_parallel.ash
bin/env_parallel.bash qnx copy qnx bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash pidora copy pidora bin/env_parallel.bash env_parallel.bash
@ -113,6 +116,7 @@ bin/env_parallel.bash netbsd copy netbsd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash openbsd copy openbsd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash freebsd copy freebsd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash debian copy debian bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash hurd copy hurd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash minix copy minix bin/env_parallel.bash env_parallel.bash
bin/env_parallel.csh qnx copy qnx bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh pidora copy pidora bin/env_parallel.csh env_parallel.csh
@ -138,6 +142,7 @@ bin/env_parallel.csh netbsd copy netbsd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh openbsd copy openbsd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh freebsd copy freebsd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh debian copy debian bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh hurd copy hurd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh minix copy minix bin/env_parallel.csh env_parallel.csh
bin/env_parallel.dash qnx copy qnx bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash pidora copy pidora bin/env_parallel.dash env_parallel.dash
@ -163,6 +168,7 @@ bin/env_parallel.dash netbsd copy netbsd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash openbsd copy openbsd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash freebsd copy freebsd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash debian copy debian bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash hurd copy hurd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash minix copy minix bin/env_parallel.dash env_parallel.dash
bin/env_parallel.fish qnx copy qnx bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish pidora copy pidora bin/env_parallel.fish env_parallel.fish
@ -188,6 +194,7 @@ bin/env_parallel.fish netbsd copy netbsd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish openbsd copy openbsd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish freebsd copy freebsd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish debian copy debian bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish hurd copy hurd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish minix copy minix bin/env_parallel.fish env_parallel.fish
bin/env_parallel.ksh qnx copy qnx bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh pidora copy pidora bin/env_parallel.ksh env_parallel.ksh
@ -213,6 +220,7 @@ bin/env_parallel.ksh netbsd copy netbsd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh openbsd copy openbsd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh freebsd copy freebsd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh debian copy debian bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh hurd copy hurd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh minix copy minix bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.mksh qnx copy qnx bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh pidora copy pidora bin/env_parallel.mksh env_parallel.mksh
@ -238,6 +246,7 @@ bin/env_parallel.mksh netbsd copy netbsd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh openbsd copy openbsd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh freebsd copy freebsd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh debian copy debian bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh hurd copy hurd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh minix copy minix bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.pdksh qnx copy qnx bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh pidora copy pidora bin/env_parallel.pdksh env_parallel.pdksh
@ -263,6 +272,7 @@ bin/env_parallel.pdksh netbsd copy netbsd bin/env_parallel.pdksh env_parallel.pd
bin/env_parallel.pdksh openbsd copy openbsd bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh freebsd copy freebsd bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh debian copy debian bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh hurd copy hurd bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh minix copy minix bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.sh qnx copy qnx bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh pidora copy pidora bin/env_parallel.sh env_parallel.sh
@ -288,6 +298,7 @@ bin/env_parallel.sh netbsd copy netbsd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh openbsd copy openbsd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh freebsd copy freebsd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh debian copy debian bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh hurd copy hurd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh minix copy minix bin/env_parallel.sh env_parallel.sh
bin/env_parallel.tcsh qnx copy qnx bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh pidora copy pidora bin/env_parallel.tcsh env_parallel.tcsh
@ -313,6 +324,7 @@ bin/env_parallel.tcsh netbsd copy netbsd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh openbsd copy openbsd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh freebsd copy freebsd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh debian copy debian bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh hurd copy hurd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh minix copy minix bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.zsh qnx copy qnx bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh pidora copy pidora bin/env_parallel.zsh env_parallel.zsh
@ -338,6 +350,7 @@ bin/env_parallel.zsh netbsd copy netbsd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh openbsd copy openbsd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh freebsd copy freebsd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh debian copy debian bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh hurd copy hurd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh minix copy minix bin/env_parallel.zsh env_parallel.zsh
bin/parcat qnx copy qnx bin/parcat parcat
bin/parcat pidora copy pidora bin/parcat parcat
@ -363,6 +376,7 @@ bin/parcat netbsd copy netbsd bin/parcat parcat
bin/parcat openbsd copy openbsd bin/parcat parcat
bin/parcat freebsd copy freebsd bin/parcat parcat
bin/parcat debian copy debian bin/parcat parcat
bin/parcat hurd copy hurd bin/parcat parcat
bin/parcat minix copy minix bin/parcat parcat
Done copying