Jak odnieść się regexem ponownie do wyniku wyszukiwania

Jak odnieść się regexem ponownie do wyniku wyszukiwania
Potat0x
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 372
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

Kopiuj
"\"[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ę.

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
2

Użyj do tego sed:

Kopiuj
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.