Ce qui suit est simplement une correction à la réponse de @tripleee
afin qu'il supprime toutes les citations du champ final comme il le fait pour tous les autres champs.
Pour montrer ce qui est corrigé, voici la réponse d' un tripleee , plus une légère modification des données d'exemple de l'OP avec des guillemets ajoutés autour du champ « Z » final .
echo 'A,,C,"D,E,F","G",I,"K,L,M","Z"' | sed -r -e 's/("([^"]*)")?,/\2\t/g'
A C D,E,F G I K,L,M "Z"
Vous pouvez voir que « Z » est laissé avec des guillemets autour. Ceci est différent de la façon dont les champs internes sont traités. Par exemple, le « G » n'a pas de guillemets dessus.
La commande suivante utilise une deuxième substitution pour nettoyer la dernière colonne:
echo 'A,,C,"D,E,F","G",I,"K,L,M","Z"' | sed -r -e 's/("([^"]*)")?,/\2\t/g' \
-e 's/\t"([^"]*)"$/\t\1/'
A C D,E,F G I K,L,M Z