Jak odnieść się regexem ponownie do wyniku wyszukiwania

0

Mam plik csv, przykładowa linia wygląda tak:
123,bla,22-2,"21,32",3,
We wszystkich liczbach w cudzysłowach chcę zamienić przecinki na kropki. Wiem jak znaleźć taki element, ale jak później dostać się do samego przecinka?
Mam

"\"[0-9\-]+,[0-9]+\""

uzyskuję "21,32" a z tego chciałbym tylko przecinek.

Ogólnie chodzi o to, że mam plik z takimi liniami: 123,bla,22-2,"21,32",3, We wszystkich liczbach objętych cudzysłowami chcę zamienić przecinek na kropkę.

2

Użyj do tego sed:

sed -i '' 's/"\([^"]*\),\([^"]*\)"/"\1.\2"/g' file.txt

Edit:

Poprawiony regex. W Vimie wyglądałoby to podobnie:

:%s/"\([^"]*\),\([^"]*\)"/"\1.\2"/g

Lub upraszczając trochę:

:%s/\v"([^"]*),([^"]*)"/"\1.\2"/g

1 użytkowników online, w tym zalogowanych: 0, gości: 1