Récupération champ avec awk ou autre commande

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

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    hello
    $ awk -F 'url=|"[ ]*/' '{print $2}' fic
    http://www.www.test-pre.fr/Documents/Series_VL/2013-06-26/Histo/test.csv
    
    1. 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 .....
    2. Contributeur
      le séparateur est soit
      url=
      soit
      "<0 ou plusieurs espaces>/
    3. 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"/>
    4. Contributeur
      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
    5. oui un ou je pensais oups..
      c'est bien compris en tout cas
      merci
  2. Contributeur
    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
    
    $
    1. Contributeur
      @zipe31 : comment ne pas transformer http:// en URL bleu ?
    2. Contributeur
      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
    3. Contributeur
      ahhh, j'ai tout essayé sauf ça ...
    4. Bonjour,

      ça ne veut pas fonctionner ici, je suis en ksh, c'est peut être pour çà
      Jipicy ?
    5. Contributeur
      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.
      ;-(