Récupération champ avec awk ou autre commande

Résolu
Poulpoul -  
 Poulpoul -
Bonjour,

dans le fichier fic suivant:

<script type="text/javascript">window.location.href="http://www.test-pre.fr/Documents/Series_VL/2013-06-26/Histo/test.csv";</script><noscript><meta http-equiv="refresh" content="0;url=http://www.www.test-pre.fr/Documents/Series_VL/2013-06-26/Histo/test.csv" /></noscript>

je voudrais savoir s'il y a des méthodes plus simples avec différents outils, afin de récupérer ce qui est indiqué en gras.

j'ai réussi en créant la variable suivante:
FICJOUR='awk 'BEGIN {FS="[=;]" }{print $3}' fic | sed 's/"//g''

mais peut-être qu'il y a mieux ?

++
Poulpoul

2 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Une méthode avec "grep" et son option "-P" (regex Perl) :

    $ cat plop 
    <script type="text/javascript">window.location.href="http://www.test-pre.fr/Documents/Series_VL/2013-06-26/Histo/test.csv";</script><noscript><meta http-equiv="refresh" content="0;url=http://www.www.test-pre.fr/Documents/Series_VL/2013-06-26/Histo/test.csv" /></noscript> 
    
    $ grep -o -P 'url=\K[^"]*(?=")' plop 
    http://www.www.test-pre.fr/Documents/Series_VL/2013-06-26/Histo/test.csv
    
    $
    0
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      @zipe31 : comment ne pas transformer http:// en URL bleu ?
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut,

      En insérant une balise dans l'url. Exemple :
      http:/<ital></ital>/www.www.test-pre.fr/Documents/Series_VL/2013-06-26/Histo/test.csv
      Nous donne :
      http://www.www.test-pre.fr/Documents/Series_VL/2013-06-26/Histo/test.csv
      0
    3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      ahhh, j'ai tout essayé sauf ça ...
      0
    4. Poulpoul
       
      Bonjour,

      ça ne veut pas fonctionner ici, je suis en ksh, c'est peut être pour çà
      Jipicy ?
      0
    5. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Je doute que le shell y soit pour quelque chose.
      Par contre le système (Unix ? GNU/Linux ? BSD ?) peut être et la version de grep sûrement.
      Après comme il est précisé dans le man :
             -P, --perl-regexp
      Interpréter  le  MOTIF  comme  une  expression  rationnelle  Perl   (PCRE,   voir ci-dessous).  Cette  option  est  expérimentale  et grep -P pourrait signaler des fonctionnalités non implémentées.
      ;-(
      0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    $ awk -F 'url=|"[ ]*/' '{print $2}' fic
    http://www.www.test-pre.fr/Documents/Series_VL/2013-06-26/Histo/test.csv
    
    0
    1. Poulpoul
       
      Bonjour,

      y aurait il la possibilité de détailler la commande au niveau du séparateur 'url=|"[ ]*/' ?
      on matche url= et après je ne vois pas trop .....
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      le séparateur est soit
      url=
      soit
      "<0 ou plusieurs espaces>/
      0
    3. Poulpoul
       
      c'est donc un pipe,
      et donc le "<0 ou plusieurs espaces>/ correspond à l'espace que je viens de souligner entre csv" et le / donc, c'est bien çà ?
      url=http://www.www.test-pre.fr/Documents/Series_VL/2013-06-26/Histo/test.csv" />
      0
    4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      c'est pas un pipe, c'est un ou : -F 'séparateur1 | séparateur2 | séparateur3'
      pour l'espace, oui avec [ ]* il peut ne pas en avoir ou en avoir plusieurs
      0
    5. Poulpoul
       
      oui un ou je pensais oups..
      c'est bien compris en tout cas
      merci
      0