Bonjour,
j'ai des programmes awk que je dois faire tourner.
Pour cela j'utilise cygwin. Tout fonctionne bien.
Le probleme c'est que je dois apppliquer le meme programme a plusieurs fichiers textes ( 40 fichiers au total)
J'aimerai lancer mon programme sans avoir a taper chaque ligne sous cygwin.
existe-t-il un moyen de regrouper ces executions ?
Merci d'avance pour vos reponses !
Key
# la réponse est simple
Posté par JJD . Évalué à 1.
-> OUI
[^] # Re: la réponse est simple
Posté par JJD . Évalué à 3.
Donc, comment exécutes-tu ton programme awk actuellement ?
On va supposer que tu tapes "awk -f programme.awk fichier_à_traiter".
Où sont tes fichiers à traiter :
- tous les fichiers d'un répertoire donné ?
- tous les fichiers pouvant correspondre à un masque ? (par exemple *.txt , */t*.csv, ...)
- tu as la liste de ces fichiers dans un fichier ?
Comment veux tu récupérer le résultat :
- un fichier de sortie par fichier en entrée ?
- un unique fichier de sortie ?
Supposons donc que tu veux traiter tous les fichiers *.txt du répertoire courant avec ton programme awk contenu dans le fichier programme.awk et que tu veux un fichier de sortie par fichier d'entrée avec les noms *.out, tu peux faire (sous bash) :
for f in *.txt ; do awk -f programme.awk "$f" >"${f/.txt$/.out}" ; done
En fonction de tes besoins, il te reste à adapter ...
A+
JJD
# bash is your friend
Posté par schyzomarijks . Évalué à 2.
for i in *;
do
echo $i
awk -f progfile $i
done;
en prime un petit tutorial sur bash http://www.c-sait.net/cours/scripts.php(...)
[^] # Re: bash is your friend
Posté par liberforce (site web personnel) . Évalué à 2.
find /vers/mes/fichiers -exec awk -f ton_programme_awk {} \;
Les accolades remplacent le nom du fichier repéré par find. Tu peux aussi utiliser des options pour sélectionner tes fichiers (par exemple l'option -name "*.html" ne te trouvera que les fichiers html, qui seront ensuite traités par ton script awk.
# soluce beurk
Posté par snt . Évalué à 1.
Ca marche ?
Si oui, vive awk.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.