Ваші другі цитати не вказано:
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