Poniżej znajduje się po prostu korekta odpowiedzi @tripleee,
dzięki czemu usuwa cudzysłowy z ostatniego pola, tak jak w przypadku wszystkich innych pól.
Aby pokazać, co jest poprawiane, poniżej znajduje się odpowiedź trójki oraz niewielka modyfikacja przykładowych danych OP z dodanymi cudzysłowami wokół końcowego pola „ Z ”.
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"
Widać, że „ Z ” zostało otoczone cudzysłowami. Różni się to od obsługi pól wewnętrznych. Na przykład „ G ” nie zawiera cudzysłowów.
Następujące polecenie używa drugiego podstawienia do wyczyszczenia ostatniej kolumny:
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