2011-02-08 12 views
5

Sono nuovo ad awk, e non riesco a capire questo fuori. Come posso sostituire in un singolo campo usando un'espressione regolare?awk stumper: regex sostituzione all'interno di un campo

In perl, è possibile assegnare il campo di interesse a una variabile, quindi $myvar =~ s/foo/bar/g. Naturalmente anche in Perl devo fare la mia gestione sul campo, e questo è più facile in awk.

Per il problema in questo momento, si tratta di registrazioni di fondi europei e desidero modificare le virgole in periodi nel campo dell'importo. Ma ho bisogno di indirizzare solo quel campo, quindi non mangio gli altri campi in cui le virgole potrebbero essere usate come punteggiatura in prosa.

La soluzione è più difficile di quanto immagino? O più semplice? Devo cambiare il separatore del record o qualcosa di appiccicoso come quello?

Grazie per il vostro aiuto!

risposta

6

sub() accetta un terzo argomento che è il campo (o variabile) per cambiare:

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

Wow, non so come ho perso che nella mia O'Reilly. Eccolo. Deve essere stato tutto il giorno. GRAZIE! – rockriver

Problemi correlati