Arrondissement nombre flottant à l'aide de AWK

J'ai un fichier b.xyz comme,

-19.794325 -23.350704 -9.552335
-20.313872 -23.948248 -8.924463
-18.810708 -23.571757 -9.494047
-20.048543 -23.660052 -10.478968

Je veux à la limite de chacune des entrées à trois chiffres après la virgule.

J'ai essayé celui

awk '{ $1=sprintf("%.3f",$1)} {$2=sprintf("%.3f",$2)} {$3=sprintf("%.3f",$3)} {print $1, $2, $3}' b.xyz

il travaille pendant trois colonnes, mais comment l'étendre à appliquer pour n/toutes les colonnes?

Vos données de l'échantillon n'a pas de sens, 4lines d'entrée, 6 lignes de sortie? -19.794345 doit tour à -19.794, ce qu'il FAIT dans mon test, mais PAS dans votre exemple de sortie. (Je ne confirmer que le champ 3 de la ligne 1 n'a pas obtenir de l'arrondi, dont je ne comprends pas.). Veuillez mettre à jour votre question, plutôt que de répondre dans les commentaires. Bonne chance.
il imprime les lignes en double!

OriginalL'auteur user3311147 | 2014-03-10