Primeiro de tudo, se você quiser fazer isso para 700.000 iterações, você realmente deve procurar algo diferente de bash. Além disso, o que você mostra não é um array no bash, é uma string 1 . Arrays são separados por espaços, não por vírgulas.
Dito isto, aqui está uma maneira bash, assumindo verdadeiras matrizes:
a=(1 2 3 4 5)
b=(2 4)
c=( $(printf "%s\n" "${a[@]}" "${b[@]}" | sort | uniq -u) )
Se você realmente tiver strings separadas por vírgula e não arrays, use isso:
a=(1,2,3,4,5)
b=(2,4)
c=( $(sed 's/,/\n/g' <(printf "%s\n" "${a[@]}" "${b[@]}") | sort | uniq -u) )
Como alternativa, você pode usar o perl:
#!/usr/bin/perl
my @A=(1,2,3,4,5);
my @B=(2,4);
my %k;
map{$k{$_}++} (@A,@B);
my @C=grep($k{$_}==1,keys(%k));
print "@C\n";
1 Estritamente falando, é uma matriz com um elemento, mas que é essencialmente o mesmo que uma string no que diz respeito ao bash.