fork download
  1. #!/usr/bin/env bash
  2. # ^^^^ - note bash; not zsh, not sh
  3.  
  4. processLine() {
  5. local data idx # declare locals so we don't pollute global namespace
  6. local -a arr1 arr2 # declare local arrays separately
  7. data=$1 # assign our first positional argument to $data
  8.  
  9. # no separator? bail out early
  10. [[ $data = *" | "* ]] || {
  11. echo "ERROR: Data not in expected form" >&2
  12. return 1
  13. }
  14.  
  15. # break our two variables into two separate arrays
  16. IFS=, read -r -a arr1 <<<"${data%%' | '*}"
  17. IFS=, read -r -a arr2 <<<"${data#*' | '}"
  18.  
  19. # iterate over those arrays by index/key to pair items up
  20. for idx in "${!arr1[@]}"; do
  21. printf '%s,%s ' "${arr1[$idx]}" "${arr2[$idx]}"
  22. done
  23. printf '\n' # add a trailing newline
  24. }
  25.  
  26. processLine 'a,b,c,d,e,f,g | 1,2,3,4,5,6,7'
Success #stdin #stdout 0.01s 5520KB
stdin
Standard input is empty
stdout
a,1 b,2 c,3 d,4 e,5 f,6 g,7