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 22/11/2016, à 21:35

Steemo

[RÉSOLU] Récupérer une chaîne de caractères situés à un endroit précis

Bonsoir,
Je dois récupérer une chaîne de caractères qui précède une autre chaîne de caractères (en argument), cependant, entre ces deux chaines il doit y avoir X virgules. J'imagine que ce n'est pas très clair alors voici un exemple pour 2 virgules:
Fichier texte:

[toto,tata,titi,toti]

Si j’exécute mon script avec comme argument toti par exemple, il devra m'afficher tata car il y a deux virgules entre les deux chaînes de caractères.

A noter que le texte dans lequel je dois faire mes recherches, est un fichier json hébergé sur une page internet, j'ai réussi à trouver la commande curl "lien internet" pour m'afficher mon texte dans lequel je dois chercher ma chaîne de caractères.

N'étant pas un expert, j'ai fais différentes recherches, que ce soit avec grep, sed, cut, awk, je n'ai rien trouvé de concluant..

Je vous remercie d'avance, bonne soirée

Dernière modification par Steemo (Le 24/11/2016, à 16:45)

Hors ligne

#2 Le 23/11/2016, à 07:30

pingouinux

Re : [RÉSOLU] Récupérer une chaîne de caractères situés à un endroit précis

Bonjour,
Voici un premier jet, qui fonctionne sur ton exemple. Il faut fournir toti en argument du script.

awk -F"[][,]" -v txt="$1" '{for(i=0;++i<=NF;)if($i==txt){print $(i-2);break}}' <<<"[toto,tata,titi,toti]"

Il y aura des adaptations à faire en fonction de la syntaxe exacte de ton fichier.

Hors ligne

#3 Le 23/11/2016, à 23:04

Steemo

Re : [RÉSOLU] Récupérer une chaîne de caractères situés à un endroit précis

Bonsoir,
Merci beaucoup pour ton aide, ça fait plaisir smile

Alors je viens de tester cette commande sur l'exemple, et effectivement ça marche bien. Cependant, malgré mes efforts pour comprendre la commande et après de nombreux tests, je n'arrive pas à utiliser ce script sur mon vrai fichier.
Voici un exemple qui se rapproche énormément de ce que je dois faire (fichier json):

[{ "pere" : "jean" , "mere" : "marie" , "enfant" : "pierre zola" , "famille" : "dupont" , "effectif" : "4"},{ "pere" : "pierre" , "mere" : "elise" , "enfant" : "maurisse" , "famille" : "lemaigre" , "effectif" : "3"}]

Si je fais

./monscript.sh dupont

  alors celà doit m'afficher marie

Je continue de chercher de mon côté et de me renseigner sur la commande awk, merci

Bonne soirée

Dernière modification par Steemo (Le 23/11/2016, à 23:05)

Hors ligne

#4 Le 24/11/2016, à 07:29

pingouinux

Re : [RÉSOLU] Récupérer une chaîne de caractères situés à un endroit précis

Ce n'est pas du tout la syntaxe que tu as indiquée en #1.
La ligne que tu montres en #3 peut être interprétée comme une liste de dictionnaires python, et il semble que tu recherches la "mere" dans la "famille" dont tu indiques le nom.
A priori, je ferais ça en python, mais il faudrait en savoir plus sur la structure du fichier de départ (je ne sais pas ce qu'est un fichier json).

Hors ligne

#5 Le 24/11/2016, à 11:12

credenhill

Re : [RÉSOLU] Récupérer une chaîne de caractères situés à un endroit précis

hello

$ awk -v a="dupont" -v n=2 'BEGIN {RS="[[]{ |}*,{*|}[]]"} {t[NR]=$0} $0 ~ a {print t[NR-n]}' fichier
 "mere" : "marie" 

Hors ligne

#6 Le 24/11/2016, à 16:44

Steemo

Re : [RÉSOLU] Récupérer une chaîne de caractères situés à un endroit précis

Bonjour,

Oui tu as raison Pingouinux, j'aurai dû directement donner la bonne syntaxe. Par contre je dois faire ça obligatoirement en shell.
Mais le problème est résolu car Credenhill m'a donné la commande qu'il me fallait.

Je vous remercie tous les deux pour votre aide, c'est sympa smile

Sujet résolu !

Merci beaucoup, bonne journée

Hors ligne

#7 Le 24/11/2016, à 17:03

erresse

Re : [RÉSOLU] Récupérer une chaîne de caractères situés à un endroit précis

pingouinux a écrit :

(je ne sais pas ce qu'est un fichier json)

C'est un fichier java...


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#8 Le 24/11/2016, à 17:38

pingouinux

Re : [RÉSOLU] Récupérer une chaîne de caractères situés à un endroit précis

Merci erresse. J'avais regardé depuis mon message.

Hors ligne