Wpis z mikrobloga

#regexp #sed #awk #programowanie
Poproszę o pomoc z windowsowym (gnuwin32) awk/gawk/sed lub alternatywą pod windowsem.

Pliki z danymi wejściowymi mają format (przykładowy wiersz)
yzz-0000001000-v1000,"54,76","54,76",0,"54,76","54,76"
Chcę otrzymać
yzz-0000001000-v1000;54,76;54,76;0;54,76;54,76
czyli zmienić separatory między polami z przecinka na średnik, jednocześnie nie zmieniajac separatorów części ułamkowych.

Znalazlem w sieci sugestie regexpa

/(,)(?=(?:[^"]|"[^"]*")*$)/
i na testerze online jest ok, ale nie potrafię wyescapować tak by działało.

gawk "{gsub(/(,)(?=(?:[^\""]|\""[^\""]*\"")*$)/,\""x\""); print}" plikwejsciowy
nie zmienia nawet pierwszego przecinka.
Co robię źle?
Niestety przy tym zadaniu nie mam możliwości przesiadki na linuxa. Preferowane rozwiązanie nie zakłada instalacji pythona/perla/itp
  • 2
Interesujące, ale racji obostrzeń (i drobnego wpływu wina które skonsumowalem ;)) sugeruję rozbicie po prostu na trzy przejscia, w pierwszym łap "\d+,\d+," jako grupę i zamieniaj drugi przecinek na srednik, w drugim [a-Z-0-9]*, by tez pierwszy srednik zalatwic w trzecim wiadomo, wywalic cudzyslowie. W tym stanie niestety to najlepsza podpowiedz jaka moga zaoferowac :)
@uhu8