Ihre zweiten Anführungszeichen sind falsch:
sed -e 's/\(".*\),\(.*"\)/\1 \2/g'
Die Verwendung von regulären Ausdrücken entspricht außerdem in der Regel dem längsten Teil des Texts. Dies bedeutet, dass dies nicht funktioniert, wenn Sie mehr als ein Feld in Anführungszeichen in der Zeichenfolge haben.
Eine Methode, mit der mehrere in Anführungszeichen gesetzte Felder behandelt werden
sed -e 's/\(\"[^",]\+\),\([^",]*\)/\1 \2/g' -e 's/\"//g'
Dies ist auch eine Möglichkeit, dies zu lösen. Bei Eingaben, die mehr als ein Komma pro Feld in Anführungszeichen enthalten können, müsste der erste Ausdruck im sed so oft wie der maximale Komma-Inhalt in einem einzelnen Feld wiederholt werden oder bis dahin ändert die Ausgabe überhaupt nicht.
Das Ausführen von sed mit mehr als einem Ausdruck sollte effizienter sein als das Ausführen mehrerer sed-Prozesse und eines "tr", das alle mit offenen Pipes ausgeführt wird.
Dies kann jedoch unerwünschte Folgen haben, wenn die Eingabe nicht richtig formatiert ist. dh geschachtelte Anführungszeichen, nicht abgeschlossene Anführungszeichen.
Mit dem laufenden Beispiel:
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'
Ausgabe:
123,ABC DEV 23,345,534,some more comma-separated words,202,NAME