Bash - Regexp

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    $ 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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Avec "sed" aussi ça le fait :

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

      ;-))
      0
    2. Utilisateur anonyme
       
      Cela fonctionne parfaitement ! Merci beaucoup
      0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  3. Utilisateur anonyme
     
    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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Merci de poster un exemple extrait de ton fichier avec la chaine à extraire, sans quoi... ;-\
      0
  4. Utilisateur anonyme
     
    <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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Ok, mais il faudrait aussi un critère pour savoir quelle phrase il faut extraire ;-((

      Motif, numéro de ligne, etc.
      0
    2. Utilisateur anonyme
       
      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