Ваши вторые цитаты неуместны:
sed -e 's/\(".*\),\(.*"\)/\1 \2/g'
Кроме того, использование регулярных выражений, как правило, соответствует самой длинной части текста, что означает, что это не сработает, если в строке более одного поля в кавычках.
Способ, который обрабатывает несколько полей в кавычках в sed
sed -e 's/\(\"[^",]\+\),\([^",]*\)/\1 \2/g' -e 's/\"//g'
Это также способ решить эту проблему, однако, с помощью ввода, которое может содержать более одной запятой на поле в кавычках, первое выражение в sed должно будет повторяться столько раз, сколько максимальное запятое в одном поле, или до не меняет выход вообще.
Выполнение sed с более чем одним выражением должно быть более эффективным, чем выполнение нескольких процессов sed, и "tr", выполняемый с открытыми каналами.
Однако это может иметь нежелательные последствия, если ввод не отформатирован должным образом. то есть вложенные кавычки, неопределенные кавычки.
Используя работающий пример:
echo '123,"ABC, DEV 23",345,534,"some more, comma-separated, words",202,NAME' \
| sed -e 's/\(\"[^",]\+\),\([^",]*\)/\1 \2/g' \
-e 's/\(\"[^",]\+\),\([^",]*\)/\1 \2/g' -e 's/\"//g'
Выход:
123,ABC DEV 23,345,534,some more comma-separated words,202,NAME