sed -r "s/,/','/g; s/\(([^)]+)\)/('')/g"
Vamos ver como isso altera a entrada que você forneceu:
where c1 in (a) and c2 in (a,b,c) and c3 in ()
Primeiro, as vírgulas são agrupadas entre aspas ( s/,/','/g
):
where c1 in (a) and c2 in (a','b','c) and c3 in ()
Em seguida, adicionamos aspas dentro dos parentes não vazios ( s/\(([^)]+)\)/('')/g
):
where c1 in ('a') and c2 in ('a','b','c') and c3 in ()
… qual é a saída que você queria.
Cuidado, pois essa expressão regular pode afetar outras linhas da maneira que você não quer.