awk et le caractere spécial * - Shell/Batch - Programmation
Marsh Posté le 05-10-2012 à 16:29:41
salut,
d'abord, `for i in $(commande)' est une très mauvaise chose
simplement `for i in fichier*'
ensuite je suis certain que awk ne sert à rien ici.
c'est quoi, du bash ? ou du POSIX ?
si c'est du bash, il possède des remplacements de paramètres plus étendus qu'un shell POSIX, qui te permettront de ne retenir d'une variable que ce qui t'intéresse, sans tr, ni sed, ni awk.
Marsh Posté le 05-10-2012 à 20:50:09
Merci pour l'astuce for i in fichier*
C'est du bash
Awk me sert ici (car je ne sais pas faire autrement) . J'ai raccourci mon programme mais j'ai quelques conditions à remplir afin d'incrementer mon fichier de sortie
Marsh Posté le 05-10-2012 à 23:21:12
admettons.
alors, c'est peut-être la boucle `for' qui est en trop.
Code :
|
Marsh Posté le 06-10-2012 à 14:40:51
Ca fonctionne merci
Je ne savais pas que l'on pouvais mettre en entrée les fichiers sous cette forme : fichier*. Du coup j'abandonne la boucle.
1 question sur le code : comme il ya le caractere * tu es obligé d'entourer le fichier par les 2 symboles ^.
Marsh Posté le 06-10-2012 à 15:09:13
Citation : comme il ya le caractere * tu es obligé d'entourer le fichier par les 2 symboles ^. |
non, c'est pour éviter que, par exemple, le_fichier2_rose, ou fichier1_rose_123, correspondent à la recherche.
Marsh Posté le 05-10-2012 à 15:32:41
Bonjour,
J’ai différents fichiers d'entrée : fichier1_rose fichier2a_rose fichier1_bleu fichier3_bleu
Je souhaite faire une boucle sur l’ensemble des fichiers et récupérer des informations via un programme awk.
Le problème est de savoir comment écrire * sous forme awk ( partie en rouge qui ne fonctionne)
var1="rose"
for tri in `ls fichier*`
do
gawk -v $var1=var1 '{ mon prog}
END { if (FILENAME=="fichier*"_"var1" ) {print " le caractere etudie est " var1 }}
' $tri > "$tri"_final
done
Merci pour votre aide