# Terminal : Exécuter un fichier AWK



## jmini (22 Avril 2007)

Bonjour,

On a présenté en cours le langage de script/programmation AWK, et évidemment j'ai voulu essayer sur mon Mac. Aucun pb pour saisir une ligne dans le terminal.

Par contre ensuite il a été question d'écrire le script dans un fichier texte, de le rendre exécutable et de l'exécuter... Et là je ne sais pas comment faire... Les unixiens de la salle m'ont bien suggéré des choses (changer le bits qui indique si le fichier est exécutable, faire un Cmod...) ça ne marchait pas... À vrai dire, je n'ai même plus les messages d'erreurs parce que je n'ai pas retenu...

* Est-ce que quelqu'un peut m'indiquer quelles sont les commandes pour faire exécuter un script AWK dans le terminal ? *
 Je pense que le fait que ce soit un script AWK n'a pas beaucoup d'importance et ça doit être pour tout le monde pareil. J'avoue que je maitrise encore très mal le côté UNIX du système d'exploitation.

* MERCI *


----------



## p4bl0 (22 Avril 2007)

Je ne connais pas du tout Awk, mais voil&#224; ce que j'ai vu en tapant awk dans mon shell :

```
Usage: awk [-f programfile | 'program'] [-Ffieldsep] [-v var=value] [files]
```
Donc sois tu tape awk -f tonfichier.awk.

Sinon tape which awk dans ton shell et si il te r&#233;pond */usr/bin/awk* (&#231;a devrait &#234;tre le cas) alors il devrait suffire de faire comme &#231;a pour avoir des fichier executable :

la premi&#232;re ligne de ton fichier doit &#234;tre :

```
#!/usr/bin/awk -f
```

Ensuite on admet que ton fichier s'appelle myfile.awk et qu'il est dans le r&#233;pertoire courant :
chmod +x myfile.awk

Et le tour et jou&#233; 

Maintenant tu peux l'appeler (si il est dans le repertoire courant) directement via ./myfile.awk ou via myfile.awk si tu a ajout&#233; *.* &#224; ton PATH


----------



## FjRond (23 Avril 2007)

p4bl0 a dit:


> chmod +x myfile.awk


ou 
	
	



```
$ chmod 755 myfile.awk
```



p4bl0 a dit:


> Maintenant tu peux l'appeler (si il est dans le repertoire courant) directement via ./myfile.awk ou via myfile.awk si tu a ajouté *.* à ton PATH


On peut aussi créer un répertoire bin dans le $HOME qu'on met dans le path:

```
$ echo "PATH=${HOME}/bin:$PATH\nexport PATH" >> .bash_profile
```


----------



## p4bl0 (23 Avril 2007)

FjRond a dit:


> ou
> 
> 
> 
> ...


Oui moi c'est ce que j'ai fait chez moi d'avoir un bin/ dans mon home 

Apr&#232;s il faut soit avoir ses script directement dedans, soit cr&#233;er des alias (avec ln) dans ~/bin de ses script qui sont rang&#233; ailleurs.


----------



## jmini (20 Juillet 2007)

Tout d'abord, je vois que je n'ai même pas pris le temps de vous dire *MERCI* pour l'aide apportée il y a quelques mois...

la méthode ci dessous marche effectivement :



p4bl0 a dit:


> la première ligne de ton fichier doit être :
> 
> ```
> #!/usr/bin/awk -f
> ...



Et comme j'ai cherché à la refaire marcher aujourd'hui sans y parvenir, j'apporte une précision _pour les nuls_ :
Quand il est écrit *#!/usr/bin/awk -f* doit être *la première ligne du fichier*, c'est le cas !!!
On ne peut pas avoir de ligne de commentaire avant...

Le terminal retournait l'erreur : 





> -bash: ./prog.awk: cannot execute binary file


 juste parce que j'avais mis quelques ligne de commentaires avant.

Encore merci.


----------



## bompi (20 Juillet 2007)

Une petite description du _shebang_ ici.


----------



## p4bl0 (20 Juillet 2007)

bompi a dit:


> Une petite description du _shebang_ ici.


Shebang  ou Shebang ? 


EDIT : orf... je viens de m'apercevoir que c'est mon 3000&#232;me message, et c'est du flood -_- :rateau:


----------



## tatouille (21 Juillet 2007)

p4bl0 a dit:


> Shebang  ou Shebang ?
> 
> 
> EDIT : orf... je viens de m'apercevoir que c'est mon 3000&#232;me message, et c'est du flood -_- :rateau:



ada, oui je te dirais juste que historiquement: c'est li&#233;  
il ya aussi des personnages du muppets show ...


----------

