[Shell] extraire chaine de caractere

Bonjour,

J'ai un fichier blabla.txt qui contient de nombreuses lignes similaires avec en début de fichiers d'autres chaines de caractères non similaires aux lignes suivantes :

<a target="_blank" id="alive_link" title="Name: atchoum Size: 153.1 MB " href="http://www.blabla.com/out.php?url=http://www.blibli.com/14AZz45"</a></p>

<a target="_blank" id="alive_link" title="Name: atchoum Size: 153.1 MB " href="http://www.blabla.com/out.php?url=http://www.blibli.com/14AZz46"</a></p>

Je souhaiterais extraire une partie de ligne, en l'occurrence, toutes les adresses : https://www.blibli.com/XXXXXXX

En utilisant un grep, cela me sélectionne bien ce que je veux, mais ca ne "supprime" pas le reste.

Une petite aide ?

Merci d'avance.

4 réponses

  1. Modérateur
    Inspire-toi de ceci
    johand@osiris: ~/src/CCM/bash $ cat urls.txt  
    <a target="_blank" id="alive_link" title="Name: atchoum Size: 153.1 MB " href="https://www.blibli.com/14AZz45 target='_blank'>http://www.blabla.com/out.php?url=https://www.blibli.com/14AZz45"</a></p> 
    
    <a target="_blank" id="alive_link" title="Name: atchoum Size: 153.1 MB " href="https://www.blibli.com/14AZz46 target='_blank'>http://www.blabla.com/out.php?url=https://www.blibli.com/14AZz46"</a></p>  
    
    johand@osiris: ~/src/CCM/bash $ cat getURLS.sh  
    grep -i "https://www.blibli.com/[a-z0-9]*" urls.txt | while read line; do 
     tmp=${line##?*url=}; 
     url=${tmp%%\"?*}; 
     echo $url; 
    done 
    
    johand@osiris: ~/src/CCM/bash $ sh getURLS.sh  
    https://www.blibli.com/14AZz45 
    https://www.blibli.com/14AZz46 
    
    

    Voir par exemple
    http://abs.traduc.org/abs-fr/abs-5.3.pdf (page physique 96)

    Gates gave ^H sold you the windows.
    GNU gave us the whole house.(Alexandrin)
    1. Contributeur
      Salut,

      $ cat plop 
      <a target="_blank" id="alive_link" title="Name: atchoum Size: 153.1 MB " href="http://www.blabla.com/out.php?url=http://www.blibli.com/14AZz45"</a></p>
      
      <a target="_blank" id="alive_link" title="Name: atchoum Size: 153.1 MB " href="http://www.blabla.com/out.php?url=http://www.blibli.com/14AZz46"</a></p> 
      
      $ sed -n 's#.*url=\([^"]*\).*#\1#p' plop 
      https://www.blibli.com/14AZz45
      https://www.blibli.com/14AZz46
      
      $

      ;-))
      1. Contributeur
        Sinon juste avec "grep" on peut faire comme cela (mais il faut rajouter un pipe) :

        grep -o '=http[^"]*' plop | grep -o 'h.*'