Для одной пары цитат в строке вы можете использовать:
%s/\v("[^"]*)@<=,(.*")@=/;/g
Введите:
x,"y,z,a",b
Выход:
x,"y;z;a",b
Для более чем пары кавычек в строке вы можете использовать следующую команду awk:
:!awk -F'"' -v OFS='"' '{ for (i=2; i<=NF; i+=2) gsub(",", ";", $i) } 1' infile > outfile
Эта команда основана на вопросе в Unix StackExchange . Он установит кавычку "
в качестве разделителя полей и подставит запятые в любое другое поле, используя gsub
.