Usage of gsub
厳密には gsub() の問題ではなく shell の問題になりますが、一行野郎で
$ echo 'a,b,c,d,e' | gawk '{gsub(/\,/,"'&'",$0);print $0}'
のようにしても
a','b','c','d','e
とならないというものです。
まさに「クォート地獄」なわけですが、回答として、
$ echo 'a,b,c,d,e' | gawk -v sq=\' 'gsub(/,/,sq"&"sq)'
というように -v オプションで対応させています。
'gsub(/,/,sq"&"sq)'
という部分は gsub() が置換に成功すると置換回数を返し、$0 を置換するため、
'{gsub(/,/,sq"&"sq);print}'
などとする必要もないわけです。
今回の問題に限らず、クォートが多くなると shell 解釈部分と awk の解釈部分が分かりにくくなるので、-v は非常に有効です。