Problème script awk !! =/ - Shell/Batch - Programmation
Marsh Posté le 15-10-2011 à 22:36:10
S'il vous plait c'est vraiment urgent !! Est_ce que quelqu'un voit où se trouve mon erreur ??
Merciiiiiiiiiii !!!
Marsh Posté le 16-10-2011 à 00:13:52
Vérifies bien ce que tu tapes, car si je fais:
Code :
|
dans un fichier essai.awk (faut pas mettre ton print dans le BEGIN, hein)
et que je tape awk -f essai.awk essai.txt
ou essai.txt contient
aa1 : aa |
ça me donne le résultat attendu:
C:\MKSNT>awk -f essai.awk essai.txt |
De toutes façon, laisse tomber awk qui est antédiluvien, et passes à Perl qui est bien plus facile a utiliser et puissant.
A+,
Marsh Posté le 16-10-2011 à 10:03:01
Bonjour
awk est un langage de traitement de flot (de données). Sa syntaxe de base est donc
Code :
|
ce que tu as avec
Code :
|
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 :
|
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 :
|
2) on appelle awk en lui indiquant (-f) que le code de traitement se trouve dans le fichier .awk écrit précédemment
Code :
|
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"...
Marsh Posté le 15-10-2011 à 21:34:29
Bonjour,
tout d'abord je m'excuse de poser ma question dans la catégorie "Shell" au lieu de "Awk" mais cette dernière n'existant pas je n'avait pas vraiment le choix..
Bref, ce n'est pas le plus important !
Voilà mon problème : très débutante en Système j'ai tenté d'écrire mon premier programme "essai.awk" qui est tout simplement :
#! /usr/bin/awk -f
BEGIN {
print $1
}
awk -f essai.awk /etc/passwd
pour tenter d'afficher la même chose que la commande suivante (qui par ailleurs fonctionne parfaitement bien) :
awk -F : '{print $1}' /etc/passwd
Le problème c'est que quand j'ai fait mon ./essai.awk dans mon terminal il m'affiche l'erreur suivante :
awk: 5: unexpected character '.'
Donc voilà je ne comprends vraiment pas pourquoi il ne m'accepte pas la dernière ligne du script et plus précisément le ".", de "essai.awk" je suppose n'ayant pas d'autres "." sur la ligne !
Merci beaucoup d'avance à tous ceux plus avertis que moi sur le sujet et qui auront la gentillesse de me répondre !!