[bash] Position d'un mot ds un fichier
Résolu/Fermé
tibofx
Messages postés
14
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
23 janvier 2008
-
3 janv. 2008 à 15:47
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 3 janv. 2008 à 20:19
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 3 janv. 2008 à 20:19
A voir également:
- [bash] Position d'un mot ds un fichier
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Ouvrir un fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
6 réponses
Darkito
Messages postés
1191
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
545
3 janv. 2008 à 15:59
3 janv. 2008 à 15:59
Bonjour,
tu peux essayer en faisant un grep "tonMot" pour récupérer la ligne.
ensuite tu reconnait "tonMot" et tu prends le mot suivant.
ligne=`grep "$tonMot" tonFichier | head -1` //tu récupères la 1ere occurence
res=${ligne##*$tonMot } //tu supprimes le début de la ligne, le premier mot est alors le chiffre que tu cherche
set $(echo $res $1)
res=$(eval echo $1) // tu récupères le 1er mot
echo $res
C'est vraiment laid mais ca fonctionne...
--
Tøƒ
tu peux essayer en faisant un grep "tonMot" pour récupérer la ligne.
ensuite tu reconnait "tonMot" et tu prends le mot suivant.
ligne=`grep "$tonMot" tonFichier | head -1` //tu récupères la 1ere occurence
res=${ligne##*$tonMot } //tu supprimes le début de la ligne, le premier mot est alors le chiffre que tu cherche
set $(echo $res $1)
res=$(eval echo $1) // tu récupères le 1er mot
echo $res
C'est vraiment laid mais ca fonctionne...
--
Tøƒ
tibofx
Messages postés
14
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
23 janvier 2008
3 janv. 2008 à 16:32
3 janv. 2008 à 16:32
Merci pour ta réponse si rapide ! Cependant lors de la dernière assignation de la variable res, je suppose qu eça me coupe tout le contenu de res puisqu'ensuite il ne m'affiche absolument rien, ou plutot comme si c'était un retour chariot lorsque je j'affiche sa valeur.
Darkito
Messages postés
1191
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
545
3 janv. 2008 à 16:37
3 janv. 2008 à 16:37
Il manquait un "$" devant "tonMot" dans le grep, l'erreur vient peut être de là...
sinon, rajoute des "echo $ligne", "echo $res" pour voir le processus.
--
Tøƒ
sinon, rajoute des "echo $ligne", "echo $res" pour voir le processus.
--
Tøƒ
tibofx
Messages postés
14
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
23 janvier 2008
3 janv. 2008 à 16:41
3 janv. 2008 à 16:41
Yes ! Merci beaucoup, c'est peut-être laid mais en effet c'est exactement ce que je voulais ! Quelle rapidité ! Merci beaucoup !
Darkito
Messages postés
1191
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
545
3 janv. 2008 à 16:44
3 janv. 2008 à 16:44
De rien,
Tu as eu de la chance, je suis en plein en train d'utiliser des fonctions de ce genre donc j'avais tous ce qu'il fallait sous la main.
--
Tøƒ
Tu as eu de la chance, je suis en plein en train d'utiliser des fonctions de ce genre donc j'avais tous ce qu'il fallait sous la main.
--
Tøƒ
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
3 janv. 2008 à 17:03
3 janv. 2008 à 17:03
Salut,
Un peu à la bourre, mais... (Attention : Il ne faut pas d'espace entre les 2 premiers crochets ([) qui entourent le terme "digit" !!! Ici l'espace c'est pour contrer la mise en forme des balises < code > qui empêche un affichage correct (réservé) :
Un peu à la bourre, mais... (Attention : Il ne faut pas d'espace entre les 2 premiers crochets ([) qui entourent le terme "digit" !!! Ici l'espace c'est pour contrer la mise en forme des balises < code > qui empêche un affichage correct (réservé) :
$ echo $A windows 2 sun 1 descendent 5 ...fire 1... $ echo $A | grep -o "fire [0-9][0-9]*" | grep -o '[ [:digit:]]' 1 $ echo $A | egrep -o "windows [0-9][0-9]*" | grep -o '[ [:digit:]]' 2;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tibofx
Messages postés
14
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
23 janvier 2008
3 janv. 2008 à 17:07
3 janv. 2008 à 17:07
Merci jipicy, c'est jamais trop tard pour apprendre ! Je ne suis pas encore sorti de l'auberge, donc tout est bon à prendre pour moi ! Merci encore j'ai vraiment besoin d'avancer dans ce domaine !
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
3 janv. 2008 à 20:19
3 janv. 2008 à 20:19
Un petit exemple supplémentaire avec "sed" cette fois :
$ echo "$A" windows 2 sun 1 descendent 5 ...fire 1... linux 6 bsd 4 aix 1 mac 3 firefox 2 thunderbird 1 sunbird 2 $ echo "$A" | sed -n '/.*fire \([0-9]\{1,\}\).*/ s//\1/p' 1 $ echo "$A" | sed -n '/.*linux \([0-9]\{1,\}\).*/ s//\1/p' 6 $ echo "$A" | sed -n '/.*bsd \([0-9]\{1,\}\).*/ s//\1/p' 4;-))