[SHELL] afficher valeur d'une ligne
Résolu
magicwill
Messages postés
93
Date d'inscription
Statut
Membre
Dernière intervention
-
magicwill Messages postés 93 Date d'inscription Statut Membre Dernière intervention -
magicwill Messages postés 93 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Le sujet n'est pas tres explicite, mais voici des explications:
Supposons que dans la variable ligne j'ai:
[echo $ligne]
mais je peux avoir aussi les champs qui changent de places... par exemple dans $ligne:
Je cherche par exemple à recuperer la valeur de VAR2 , en gros recuperer 44... mais je vois pas trop comment faire, si ce n'est une boucle for sur chaque mot et faire un grep pour verifier qu'il est pas vide ( grep VAR2), et ensuite recuperer valeur 44...
Il y a pas un moyen d'utiliser awk ou sed?...enfin, je sais pas... J'ai pas d'idée pour recuperer ma valeur sachant que je sais pas où elle est dans $ligne... La boucle for dessus, ca fait lourd...
Merci pour vos suggestions.
Le sujet n'est pas tres explicite, mais voici des explications:
Supposons que dans la variable ligne j'ai:
[echo $ligne]
"coucou" VAR2=44 VAR5=TEST SRV=BEAU
mais je peux avoir aussi les champs qui changent de places... par exemple dans $ligne:
"coucou" SRV=BEAU VAR2=44 VAR5=TEST
Je cherche par exemple à recuperer la valeur de VAR2 , en gros recuperer 44... mais je vois pas trop comment faire, si ce n'est une boucle for sur chaque mot et faire un grep pour verifier qu'il est pas vide ( grep VAR2), et ensuite recuperer valeur 44...
Il y a pas un moyen d'utiliser awk ou sed?...enfin, je sais pas... J'ai pas d'idée pour recuperer ma valeur sachant que je sais pas où elle est dans $ligne... La boucle for dessus, ca fait lourd...
Merci pour vos suggestions.
A voir également:
- [SHELL] afficher valeur d'une ligne
- Classic shell - Télécharger - Personnalisation
- Partager photos en ligne - Guide
- Mètre en ligne - Guide
- Aller à la ligne excel - Guide
- Afficher ligne masquée excel ✓ - Forum Excel
6 réponses
Salut,
je n'ai pas testé
lami20j
je n'ai pas testé
echo "coucou SRV=BEAU VAR2=44 VAR5=TEST" | cut -d" " -f3 | cut -d = -f2--
lami20j
Salut lami20j,
Je cite magicwill dans son 1er post : "mais je peux avoir aussi les champs qui changent de places... par exemple dans $ligne :..."
;-((
Par contre essaie ça :
Je cite magicwill dans son 1er post : "mais je peux avoir aussi les champs qui changent de places... par exemple dans $ligne :..."
;-((
Par contre essaie ça :
echo "coucou SRV=BEAU VAR2=44 VAR5=TEST" | sed 's/.*VAR2=\([^ ]* \).*/\1/'Ça devrait le faire :-))
salut... j'ai lu ta proposition jipicy...
J'ai essayé mais ca a pas l'air de le faire...
Je pense faire quelque chose comme ton sed...
Par contre, j'ai un peu de mal a comprendre chaque partie de ton sed...
Surtout explique le chapeau etoile [^ ]*
J'avoue, suis pas un pro...Mais voila ce que j'ai trouvé, apres avoir lu ce que tu as fait + un peu de net...
Et ca m'affiche VAR2=
Je pense que je dois mettre qq part une regexp pour dire des chiffres... ou regexp pour des lettres..mais alors je suis pas trop doué... de l'aide encore svp...
Merci deja pour vos suggestions...
J'ai essayé mais ca a pas l'air de le faire...
Je pense faire quelque chose comme ton sed...
Par contre, j'ai un peu de mal a comprendre chaque partie de ton sed...
sed 's/.*VAR2=\([^ ]* \).*/\1/'
Surtout explique le chapeau etoile [^ ]*
J'avoue, suis pas un pro...Mais voila ce que j'ai trouvé, apres avoir lu ce que tu as fait + un peu de net...
Et ca m'affiche VAR2=
ID=`echo $ligne | sed -n 's/.*\(VAR2=\).*/\1/p' ` echo $ID
Je pense que je dois mettre qq part une regexp pour dire des chiffres... ou regexp pour des lettres..mais alors je suis pas trop doué... de l'aide encore svp...
Merci deja pour vos suggestions...
Ca y est!!!
Trouvé!!
Par contre, faut encore que je trouve la regexp pour exprimer lettre et chiffre melangées...
Merci à vous!
Trouvé!!
ID=`echo $ligne | sed -n 's/.*\(VAR2=[0-9]*\).*/\1/p' | cut -d"=" -f2`
Par contre, faut encore que je trouve la regexp pour exprimer lettre et chiffre melangées...
Merci à vous!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question[tmpfs]$ VAR=$(echo "coucou SRV=BEAU VAR2=44 VAR5=TEST" | sed 's/.*VAR2=\([^ ]* \).*/\1/') [tmpfs]$ echo $VAR 44 [tmpfs]$Chez moi ça marche ;-\
Sinon le "chapeau espace" comme tu dis c'est pour empêcher la gloutonnerie des regex. Si on omet cette partie dans la regex -qui dit en substance de prendre tout ce qu'il y a derrière le signe égale jusqu'à ce qu'on rencontre un espace (note bien l'espace derrière l'astérisque)- elle englobera tous les espaces restant jusqu'au dernier et de ce fait matchera le restant de la ligne. De cette façon elle s'arrête au 1er espace rencontré.
je fais grep -o test fic, et il me dit grep: illegal option -- o
je fais man grep...l'option -o n'existe pas!!!!
C'est un genre de unix que j'ai je pense...
Ouin...je fondait tout mes espoirs sur ta commande!!! Effectivement, ca marche mais ailleurs quoi...
Des idées?
ps: voila ce qui veint apres illegal blabla