::: you get the Cartesian product of the variables. If you don't want that, use
:::+. See examples elsewhere about parsing an associative array with three columns into Parallel.
ChatGPT - 2023.09
In GNU parallel, the operator :::+ is used for combining arguments from different input sources so that they are used together in a single command.
Let's say you have two sets of input:
List1: A B C List2: 1 2 3
If you use
:::+, parallel will execute commands like this:
command A 1 command B 2 command C 3
Here's a simple example to demonstrate:
echo -e "A\nB\nC" > list1.txt echo -e "1\n2\n3" > list2.txt parallel echo ::: $(cat list1.txt) :::+ $(cat list2.txt)
The output will be:
A 1 B 2 C 3
This behavior is different from using ::: multiple times. If you use ::: for both lists, parallel will execute commands for every possible combination:
command A 1 command A 2 command A 3 command B 1 ... and so on
In summary, :::+ ensures that each item from the first list is combined with the corresponding item from the second list in the order they are provided.