2011-02-08 11 views
5

Soy nuevo en awk, y parece que no puedo entender esto. ¿Cómo puedo sustituir en un solo campo usando una expresión regular?awk stumper: sustitución de regex dentro de un campo

En perl, podría asignar el campo de interés a una variable, luego $myvar =~ s/foo/bar/g. Por supuesto, también en perl tengo que hacer mi propia administración de campo, y eso es más fácil en awk.

Para el tema que nos ocupa ahora, se trata de registros monetarios europeos y quiero cambiar las comas por períodos en el campo de cantidad. Pero tengo que apuntar solo a ese campo, así que no destruyo los otros campos donde las comas podrían usarse como puntuación en prosa.

¿La solución es más difícil de lo que imagino? ¿O más simple? ¿Debo cambiar el separador de registros o algo así de hortera?

¡Gracias por tu ayuda!

Respuesta

6

sub() acepta un tercer argumento que es el campo (o variable) para cambiar:

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

Vaya, no sé cómo me perdí en mi O'Reilly. Ahí está. Debe haber sido toda la noche. ¡GRACIAS! – rockriver

Cuestiones relacionadas