#!/usr/bin/env bash
# ^^^^ - note bash; not zsh, not sh
processLine() {
local data idx # declare locals so we don't pollute global namespace
local -a arr1 arr2 # declare local arrays separately
data=$1 # assign our first positional argument to $data
# no separator? bail out early
[[ $data = *" | "* ]] || {
echo "ERROR: Data not in expected form" >&2
return 1
}
# break our two variables into two separate arrays
IFS=, read -r -a arr1 <<<"${data%%' | '*}"
IFS=, read -r -a arr2 <<<"${data#*' | '}"
# iterate over those arrays by index/key to pair items up
for idx in "${!arr1[@]}"; do
printf '%s,%s ' "${arr1[$idx]}" "${arr2[$idx]}"
done
printf '\n' # add a trailing newline
}
processLine 'a,b,c,d,e,f,g | 1,2,3,4,5,6,7'
IyEvdXNyL2Jpbi9lbnYgYmFzaAojICAgICAgICAgICAgICBeXl5eIC0gbm90ZSBiYXNoOyBub3QgenNoLCBub3Qgc2gKCnByb2Nlc3NMaW5lKCkgewogIGxvY2FsIGRhdGEgaWR4ICAgICAgIyBkZWNsYXJlIGxvY2FscyBzbyB3ZSBkb24ndCBwb2xsdXRlIGdsb2JhbCBuYW1lc3BhY2UKICBsb2NhbCAtYSBhcnIxIGFycjIgICMgZGVjbGFyZSBsb2NhbCBhcnJheXMgc2VwYXJhdGVseQogIGRhdGE9JDEgICAgICAgICAgICAgIyBhc3NpZ24gb3VyIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnQgdG8gJGRhdGEKCiAgIyBubyBzZXBhcmF0b3I/IGJhaWwgb3V0IGVhcmx5CiAgW1sgJGRhdGEgPSAqIiB8ICIqIF1dIHx8IHsKICAgIGVjaG8gIkVSUk9SOiBEYXRhIG5vdCBpbiBleHBlY3RlZCBmb3JtIiA+JjIKICAgIHJldHVybiAxCiAgfQoKICAjIGJyZWFrIG91ciB0d28gdmFyaWFibGVzIGludG8gdHdvIHNlcGFyYXRlIGFycmF5cwogIElGUz0sIHJlYWQgLXIgLWEgYXJyMSA8PDwiJHtkYXRhJSUnIHwgJyp9IgogIElGUz0sIHJlYWQgLXIgLWEgYXJyMiA8PDwiJHtkYXRhIyonIHwgJ30iCgogICMgaXRlcmF0ZSBvdmVyIHRob3NlIGFycmF5cyBieSBpbmRleC9rZXkgdG8gcGFpciBpdGVtcyB1cAogIGZvciBpZHggaW4gIiR7IWFycjFbQF19IjsgZG8KICAgIHByaW50ZiAnJXMsJXMgJyAiJHthcnIxWyRpZHhdfSIgIiR7YXJyMlskaWR4XX0iCiAgZG9uZQogIHByaW50ZiAnXG4nICAjIGFkZCBhIHRyYWlsaW5nIG5ld2xpbmUKfQoKcHJvY2Vzc0xpbmUgJ2EsYixjLGQsZSxmLGcgfCAxLDIsMyw0LDUsNiw3Jw==