Pour qqn qui maîtrise bien awk ;p
Hellow :) J'ai un chtit problme pour des convertions sur de gros fichiers (shell script en ksh) Je veux convertir par exemple 22 en 00022 (et 1213 en 01213). Pour cela je peux appliquer une mthode simpliste de ce genre : NO=22 LONG=`expr $NO : ".*"` while [ "$LONG" != "5" ] do LONG=`expr $NO : ".*" + 1` NO="0"$NO done Ca va trs bien lorsqu'il s'agit de convertir une string. mais quand il faut le faire sur toute une colonne dans un gros fichier, l faut faire appel qqch de plus puissant si on veut pas que ca prenne des heures... Est-ce que qqn saurait comment faire ce truc avec awk ? Merchi d'avance :) @++ JC -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question.
Re: Pour qqn qui maîtrise bien awk ;p
"JS" == Jean-Claude Schopfer [EMAIL PROTECTED] writes: Je veux convertir par exemple 22 en 00022 (et 1213 en 01213). Pour cela je peux appliquer une mthode simpliste de ce genre : [...] Est-ce que qqn saurait comment faire ce truc avec awk ? avec GNU awk 3.03 (ce qui t'interesse c'est le "printf"): -- bash-2.02$ cat /tmp/t 35 3 6 4590 45 3 24525 bash-2.02$ cat /tmp/t | awk '{printf("hello %0.5 ***\n", $0);}' hello 00035 *** hello 3 *** hello 6 *** hello 04590 *** hello 00045 *** hello 3 *** hello 24525 *** bash-2.02$ -- tom -- in a world without fences and walls, who needs gates and windows? -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question.
Re: Pour qqn qui maîtrise bien awk ;p
On Thu, 01 Mar 2001, Jean-Claude Schopfer wrote: Je veux convertir par exemple 22 en 00022 (et 1213 en 01213). Pour cela je peux appliquer une méthode simpliste de ce genre : Pas forcement tres elegant ni tres performant : NO=22 printf "%.5d" %{NO} Si tes valeurs se trouvent dans une boucle, il est plus performant d'utiliser awk avec un pipe plutot que la commande printf qui fait un fork/exec a chaque parsing de la ligne. Donc : .. | awk '{ printf("%.5d\n", $1); }' Daniel -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question.