Bonjour
awk est un langage de traitement de flot (de données). Sa syntaxe de base est donc
Code :
- awk '{... code de traitement ...}' flot_de_donnees
|
ce que tu as avec
Code :
- awk -F : '{print $1;}' /etc/passwd
|
Toutefois, quand le code de traitement devient très très complexe, cela devient alors difficile de le placer en ligne de commandes. Possible bien sûr mais difficile. Exemple: le même code que ci-dessus mais qui ne prend que les uid > 100 et qui affiche 3 fois chaque info
Code :
- awk -F : '{if ($3 > 100) {for (i=0; i < 3; i++) {print $1;}}}' /etc/passwd
|
Dans ce cas, on travaille alors en 2 étapes
1) on crée un fichier à part dédié au code de traitement. On nomme par convention ce fichier ".awk". Ce fichier peut alors être écrit de façon plus claire, comme ceci
Code :
- {
- if ($3 > 100)
- {
- for (i=0; i < 3; i++)
- {
- print $1;
- }
- }
- }
|
2) on appelle awk en lui indiquant (-f) que le code de traitement se trouve dans le fichier .awk écrit précédemment
Code :
- awk -F : -f toto.awk /etc/passwd
|
Toi tu as tenté de mixer les 2 façons en une seule ce qui ne peut pas marcher. Soit tu mets le code complet dans ta ligne de commande, soit tu mets le code à part et, dans ta ligne de commande, tu indiques où trouver le code. Mais tu ne peux pas mettre ta ligne de commande dans le fichier ".awk"...
Message édité par Sve@r le 16-10-2011 à 10:04:41
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.