Commande Unix: awk

Fermé
William - 29 août 2003 à 09:45
 William - 29 août 2003 à 10:57
Bonjour,

Je souhaiterai poouvoir afficher à l'aide d'une boucle tous les champs d'une ligne du style

champs1/champs2/champs3/champs4....

je pensais faire une boucle avec un while, do, done et avec un awk en extraire les champs. Cependant, le nombre de champs dans la ligne est variable et je souhaiterai donc pourvoir faire en sorte que le awk puisse me sortir tous les champs quelquesoit le nombre de champs. Ce qui nécessite que l'affichage des champs ne soit pas inscrit en "dur" dans le awk du style awk '{print $1,$2,$3...}' car on ne sait pas combien de champs il y aura dans la ligne.

Dans un premier temps, je sais qu'il est possible de récupérer le nombre de champs d'une ligne avec la variable interne "NF" de la commande awk. Comment peut on ensuite exploiter cette information afin de pourvoir les afficher tous 1 par 1 dans une boucle?

Si vous avez besoin de plus d'info pour m'aider n'hésitez pas.

Merci d'avance pour vos réponses.

William.
A voir également:

1 réponse

Pitu Messages postés 1441 Date d'inscription jeudi 3 octobre 2002 Statut Contributeur Dernière intervention 5 janvier 2013 125
29 août 2003 à 10:37
Salut William.
Tu dois pouvoir faire sans pb une boucle de 1 à NF dans ton awk :
awk '{
            for (i=1;i<=NF;i++)
            print $i
           }' fichier
Voila, voila ...
a+


  (:•Þ   Pitu
2
Merci Pitou, ça marche sans problème comme tu me l'as dit. En fait, cette syntaxe me disait quemquechose mais je ne l'avais pas utilisé depuis trés longtemps.

Merci encore pour ton aide et bonne continuation.

A bientôt peut être,
William.
0