#1 Le 18/04/2016, à 09:00
- NoobWithRaspberry
Utilisation de l'implémentation du 'i' dans une boucle
Bonjour,
Actuellement en stage, je dois réaliser un programme en bash lisant les fichiers .ini. J'ai bientôt terminé, cependant je bloque sur un truc tout simple.
Alors voilà, j'aimerai afficher les entrées des sections une par une à l'aide une boucle for. Voici ma synthaxe :
for (( i=0; i<"$nombre3"; i++))
do
echo $nombre4 | awk '{print $"$i"}'
done
nombre 3 étant le nombre d'entrées dans la section et nombre4 regroupe toutes les entrées. J'aimerai que le print s'implémente avec le i (print $1, print $2...) mais ça ne fonctionne pas! Après avoir essayé pas mal de trucs à tatons, je n'y arrive toujours pas. Je ne sais pas si c'est possible de faire ça en bash (je débute).
Auriez-vous une solution?
Je vous remercie d'avance pour vos réponses.
Edit : modification du titre
Dernière modification par cqfd93 (Le 18/04/2016, à 09:28)
Hors ligne
#2 Le 18/04/2016, à 09:09
- pingouinux
Re : Utilisation de l'implémentation du 'i' dans une boucle
Bonjour,
Si j'ai bien compris, essaye
echo $nombre4 | awk -v i=$i '{print $i}'
Attention : i=0 la première fois, et c'est toute la ligne qui sera imprimée.
Dernière modification par pingouinux (Le 18/04/2016, à 09:11)
Hors ligne
#3 Le 18/04/2016, à 09:12
- NoobWithRaspberry
Re : Utilisation de l'implémentation du 'i' dans une boucle
Ahah ça fonctionne à merveille, je te remercie pour la rapidité de ta réponse
Hors ligne
#4 Le 18/04/2016, à 09:14
- pingouinux
Re : Utilisation de l'implémentation du 'i' dans une boucle
Tu peux aussi faire ceci
echo $nombre4 | awk '{print $'$i'}'
Hors ligne
#5 Le 18/04/2016, à 09:28
- NoobWithRaspberry
Re : Utilisation de l'implémentation du 'i' dans une boucle
Ah oui exact il me semblait avoir essayé ça..
Tant que je t'ai sous la main, sais-tu comment compter des lignes blanches entre deux lignes données? Par exemple compter les lignes blanches entre la ligne 2 et 9 ?
Hors ligne
#6 Le 18/04/2016, à 09:35
- pingouinux
Re : Utilisation de l'implémentation du 'i' dans une boucle
Par exemple :
awk 'NR>=2 && NR<=9 && !NF {n++}END{print n}' fichier
Hors ligne
#7 Le 18/04/2016, à 11:00
- NoobWithRaspberry
Re : Utilisation de l'implémentation du 'i' dans une boucle
Une nouvelle fois je te remercie...
Dernière question si tu veux bien, j'essaye de rechercher la ligne correspondant à un motif. J'utilise cette commande : sed -n '/ pattern /='.
Dans mon cas, je recherche une section dont je ne connais pas le nom, je recherche donc en fonction du " [ " signifiant l'ouverture de la section. Sauf que la commande ci-dessus ne fonctionne plus avec ce motif, as-tu une idée?
Hors ligne
#8 Le 18/04/2016, à 12:19
- pingouinux
Re : Utilisation de l'implémentation du 'i' dans une boucle
Peux-tu montrer un exemple ?
Hors ligne
#9 Le 18/04/2016, à 12:34
- NoobWithRaspberry
Re : Utilisation de l'implémentation du 'i' dans une boucle
nombre=$(sed '/./!d' parametres.ini | sed -n '/ SEUIL_DE_TEMPERATURE /=')
echo $nombre
nombre1=$(sed '/./!d' parametres.ini | sed -n '/ "[" /=')
echo $nombre1
Le premier sed me permet d'effacer les lignes vides, le deuxième me permet de trouver la ligne ou se situe le pattern. Pour SEUIL_DE_TEMPERATURE ça marche niquel, par contre pour rechercher le "[" ça ne veut pas. Voici l'erreur qu'il me met :
sed: -e expression n°1, caractère 8: expression régulière d'adresse inachevée
Hors ligne
#10 Le 18/04/2016, à 13:04
- NoobWithRaspberry
Re : Utilisation de l'implémentation du 'i' dans une boucle
En gros je cherche à lire les entrées entre deux sections d'un fichier ini, pour moi qui débute sous linux c'est tendu^^'
Dernière modification par NoobWithRaspberry (Le 18/04/2016, à 13:05)
Hors ligne
#11 Le 18/04/2016, à 14:50
- NoobWithRaspberry
Re : Utilisation de l'implémentation du 'i' dans une boucle
J'ai réussi pas besoin que tu me répondes, je te remercie de ton aide qui m'a été précieuse
Hors ligne