Bash - Regexp

Résolu/Fermé
Utilisateur anonyme - 3 nov. 2010 à 20:01
 Utilisateur anonyme - 4 nov. 2010 à 18:59
Bonjour,

Je code actuellement un script en bash me permettant d'automatiser une tâche quotidienne et longue.
Je rencontre un problème quand je dois récupérer une valeur entre guillemets présente dans un document texte. Ce document ne contient pas uniquement cette information. C'est pourquoi j'ai pensé utiliser une regex pour récupérer la valeur.

Ma phrase unique, blabla : "valeur a récupérer".

Voilà la structure, j'ai cherché du côté de grep, sed, awk, mais rien n'y fait.


Merci de m'aider.




--

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
4 nov. 2010 à 18:51
$ cat plop
<div style="position:absolute; left:230px; top:90px; width:470px; text-align:left;  font-size:13px;"  >
        Lorem ipsum : "valeur dont je n'ai pas besoinr".

        Ma phrase unique, blabla : "valeur a récupérer".

        Une autre phrase : "valeur dont je n'ai pas besoin".


<form action="" method="post">

$ grep "Ma phrase unique, blabla" plop  | grep -o '".*"'
"valeur a récupérer"

$
1
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
4 nov. 2010 à 18:54
Avec "sed" aussi ça le fait :

$ sed -n '/Ma phrase unique, blabla/ s/.*"\([^"]*\)".*/\1/p' plop
valeur a récupérer

;-))
0
Utilisateur anonyme
4 nov. 2010 à 18:59
Cela fonctionne parfaitement ! Merci beaucoup
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
3 nov. 2010 à 20:18
Salut,

$ cat appy77
Bonjour,

Je code actuellement un script en bash me permettant d'automatiser une tâche quotidienne et longue.
Je rencontre un problème quand je dois récupérer une valeur entre guillemets présente dans un document texte. Ce document ne contient pas uniquement cette information. C'est pourquoi j'ai pensé utiliser une regex pour récupérer la valeur.

Ma phrase unique, blabla : "valeur a récupérer".

Voilà la structure, j'ai cherché du côté de grep, sed, awk, mais rien n'y fait.


Merci de m'aider.

$ grep -o '".*"' appy77
"valeur a récupérer"

$

;-))
0
Utilisateur anonyme
4 nov. 2010 à 18:29
En fait j'ai oublié de préciser que le document comporte plusieurs phrases contenant des guillemets (c'est un code source HTML). J'aimerais donc récupérer la chaine de caractères entre guillemets de la phrase qui correspond exactement.

J'ai essayé :
$ grep -o 'Ma phrase unique, blabla : ".*"' appy77
Mais il ne me renvoi malheureusement rien.

Merci pour ton aide !
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
4 nov. 2010 à 18:31
Merci de poster un exemple extrait de ton fichier avec la chaine à extraire, sans quoi... ;-\
0
Utilisateur anonyme
4 nov. 2010 à 18:45
<div style="position:absolute; left:230px; top:90px; width:470px; text-align:left;  font-size:13px;"  >
	Lorem ipsum : "valeur dont je n'ai pas besoinr".
	
	Ma phrase unique, blabla : "valeur a récupérer".
	
	Une autre phrase : "valeur dont je n'ai pas besoin".
					
					
<form action="" method="post">


Effectivement, ce sera plus simple avec un exemple:P
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
4 nov. 2010 à 18:47
Ok, mais il faudrait aussi un critère pour savoir quelle phrase il faut extraire ;-((

Motif, numéro de ligne, etc.
0
Utilisateur anonyme
4 nov. 2010 à 18:49
Il n'y a pas de numéro fixe, la seule chose qui peut différencier les phrases c'est la phrase en elle même qui elle est fixe et unique, c'est pourquoi j'avais testé précédemment :
grep -o 'Ma phrase unique, blabla : ".*"' appy77
0