2011-02-08 12 views
5

Jestem nowicjuszem awk i nie mogę tego wykombinować. Jak mogę zastąpić w jednym polu za pomocą wyrażenia regularnego?awk stumper: podstawienie regex w polu

W Perlu mógłbym przypisać pole zainteresowania do zmiennej, a następnie $myvar =~ s/foo/bar/g. Oczywiście w Perlu muszę też zarządzać własnym polem, co jest łatwiejsze w awk.

W tej chwili, chodzi o europejskie rekordy pieniężne i chcę zmienić przecinki na okresy w polu kwoty. Ale muszę kierować tylko na to pole, więc nie łączę innych pól, w których można używać przecinków jako interpunkcji prozą.

Czy rozwiązanie jest trudniejsze, niż sobie wyobrażam? Lub prostsze? Czy muszę zmienić separator rekordów lub coś tak tandetnego?

Dziękuję za pomoc!

Odpowiedz

6

sub() akceptuje trzeci argument, który jest pole (lub zmienne), aby zmienić:

$ echo '02/08/2011 7,33 Shopping' | awk '{sub(/,/,".",$2)} 1' 
02/08/2011 7.33 Shopping 
+0

Wow, nie wiem, jak brakowało mi, że w moim O'Reilly. Tu jest. Musiał być wszechstronny. DZIĘKUJĘ CI! – rockriver