Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1239 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Problème script awk !! =/

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème script awk !! =/

n°2106551
Profil sup​primé
Posté le 15-10-2011 à 21:34:29  answer
 

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 !! :)

mood
Publicité
Posté le 15-10-2011 à 21:34:29  profilanswer
 

n°2106559
Profil sup​primé
Posté le 15-10-2011 à 22:36:10  answer
 

S'il vous plait c'est vraiment urgent !! Est_ce que quelqu'un voit où se trouve mon erreur ?? :p
Merciiiiiiiiiii !!!

n°2106566
gilou
Modérateur
Modzilla
Posté le 16-10-2011 à 00:13:52  profilanswer
 

Vérifies bien ce que tu tapes, car si je fais:

Code :
  1. BEGIN {  FS = ":" }  
  2. { print $1 }


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
bb2 : bb
cc3 : cc


ça me donne le résultat attendu:

C:\MKSNT>awk -f essai.awk essai.txt
aa1
bb2
cc3


 
De toutes façon, laisse tomber awk qui est antédiluvien, et passes à Perl qui est bien plus facile a utiliser et puissant.
 
A+,


Message édité par gilou le 16-10-2011 à 00:14:45

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2106574
Sve@r
Posté le 16-10-2011 à 10:03:01  profilanswer
 


 
Bonjour
awk est un langage de traitement de flot (de données). Sa syntaxe de base est donc

Code :
  1. awk '{... code de traitement ...}' flot_de_donnees

ce que tu as avec

Code :
  1. 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 :
  1. 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 :
  1. {
  2.     if ($3 > 100)
  3.     {
  4.         for (i=0; i < 3; i++)
  5.         {
  6.             print $1;
  7.         }
  8.     }
  9. }


 
2) on appelle awk en lui indiquant (-f) que le code de traitement se trouve dans le fichier .awk écrit précédemment

Code :
  1. 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.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Problème script awk !! =/

 

Sujets relatifs
problème paramétrages avec un scriptScript keylogger .. probléme de traduction
Problème script d'ouverture de sessionProbleme d'execution de script bash
problème script export csv phpProblème Script AS3 Flash
Script Galleria, problème avec FirefoxProblème script avec joomla
Problème d'affichage de script 
Plus de sujets relatifs à : Problème script awk !! =/


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR