Estoy tratando de reemplazar los valores de la columna $ 3 del archivo de entrada si $ 3 es> 100. He intentado:AWK: sustituir y escribir un valor de columna en el archivo de entrada
awk 'BEGIN {FS="\t"} {if($3 > 100) $3=$3/100;print}' test.stat
Esto da salida a los cambios correctos para el stdout pero, necesito el cambio para escribir en el archivo de entrada (test.stat) de modo que los valores de los campos/registros restantes permanezcan sin cambios. ¿Cualquier sugerencia?
Gracias. Otro problema ha surgido. Tengo una variable "contador" cuya suma debe ser impreso en el bloque final, he intentado:
awk 'BEGIN {FS="\t",counter=0}
{if($3 > 100) $3=$3/100;print else counter++}
END{print counter}' test.stat > ...
Ahora, sólo el valor del contador se escribe en el archivo y no los valores de $ 3. ¿Cómo puedo separar las dos salidas por lo que una modifica el archivo y la otra guardada como variable bash usando el comando de lectura. Gracias.
Gracias, no estaba al tanto de AWK's re striction –
pero no conserva el formato, es decir, mis campos de entrada están separados por pestañas, pero el registro editado tiene los campos separados por espacio. Además, cómo limitar el flotador a 2 d.p antes de imprimir. gracias –
resuelto. gracias –