Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 big_smile

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? big_smile

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 smile

Hors ligne