script shell qui recherche un mot

script shell qui recherche un mot - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 02-12-2007 à 00:18:47    

Bonjour a toutes et a tous :hello:  
 
Voila je suis entrain d'écrire un script qui doit réaliser la chose suivante :
- Il lit une phrase donnée en entrée, recherche le premier mot "toto", puis enregistre les trois parties de la phrase (à savoir ce qu'il y a avant "toto", "toto" et le reste) quelque part (par exemple dans un fichier avec une chaine de caractere du genre [début, "toto", fin]).
 
Voici le code que j'ais écris :
 
#!bin/bash
read P
(je ne sais pas comment rechercher le premier mot 'toto' dans une phrase pour découper alors j'ais penser à :  
echo $P |awk -F "toto" '{print "[",$1,",",$2,",",$3,"]"}'
Mais je pense que c'est faux (ca ne va pas prendre le premier "toto" ))
 
Quelqu'un peut m'aider ?

Reply

Marsh Posté le 02-12-2007 à 00:18:47   

Reply

Marsh Posté le 02-12-2007 à 01:52:03    

En gros ce que tu veux, c'est chercher une chaine de caractère dans une phrase, et pouvoir récupérer indépendamment ta chaine de caractère seule, ce qu'il y a avant seulement ou ce qu'il y a après seulement, j'ai bien compris ?

 

Et ton ébauche, avant de dire que c'est faux, tu l'as testée ?

 

EDIT : Et si ton motif (en l'occurence "toto" ) apparait plusieurs fois, tu perd ce qu'il y a à partir de sa seconde apparition.
Si c'est le cas, tu pourrais compter les occurences de ton motif avant tout, et adapter en collant ça dans une boucle.


Message édité par Guignolo le 02-12-2007 à 02:00:36
Reply

Marsh Posté le 02-12-2007 à 20:22:13    

Merci de m'avoir repondu Guignolo.
Oui je l'ais tester, le probleme c'est que si ma phrase est :
"ritotorito toto super"
cela sera découpé comme suit:
$1="ri"
$2="rito "
$3=" super"
Or ce que j'aurais voulu c'est :
$1="ritotorito "
$2="toto"
$3=" super"
 
Voila je n'y arrive pas...

Reply

Marsh Posté le 02-12-2007 à 20:23:58    

Autre exemple : Si ma phrase est :
Je n'aime pas toto, il est pas gentil
 
Alors j'aurais aimé avoir :
$1="Je n'aime pas "
$2="toto"
$3=", il est pas gentil"
 
Merci en tout cas.

Reply

Marsh Posté le 02-12-2007 à 20:32:16    

Fait ça en Perl :D

Reply

Marsh Posté le 02-12-2007 à 21:03:43    

C'est pas possible en shell?
(Je dis ca car je connais un peu les scripts shell mais pas du tout perl.... Il faut que je m'y mette...)

Reply

Marsh Posté le 02-12-2007 à 21:47:31    

Ben, sans doute mais je m'y suis un peu penché hier soir, j'ai abandonné assez vite, le man awk m'a vite filé une bonne migraine :/
 
Mais la base des langages comme Perl ou Python est pas difficile à apprendre, et c'est suffisant pour faire des trucs basiques comme ça (surtout Perl pour le traitement du texte).

Reply

Marsh Posté le 02-12-2007 à 21:51:42    

c vrai k le man awk fai un peu mal a la tete...:)  
En tout cas jte remercie, je vais encore faire quelque tests...

Reply

Marsh Posté le 02-12-2007 à 21:56:37    

c'est dans quel cours qu'on te demande ça ?


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 02-12-2007 à 22:02:02    

Nan la c'est pas pour un cours black_lord :)
J'écris un site internet, et jvoulais écrire un script qui fait ca pour generer automatiquement des tableaux avec des phrases que j'entre...
 
T'aurais pas une idée comment je peux procéder:)?

Reply

Marsh Posté le 02-12-2007 à 22:02:02   

Reply

Marsh Posté le 02-12-2007 à 23:09:18    

echo "<tr>"
for x in maphrase
do
echo "<td>$x</td>
done
echo "<tr>"


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed