Forum Programmation.shell [awk] mettre une variable sur print

Posté par  . Licence CC By‑SA.
Étiquettes :
0
10
jan.
2023

Bonjour,

j'ai besoin d'un coup de main pour solutionner mon soucis.
J'utilise cette ligne de commande.

pdfgrep --max-count 1 "Date" $fichier1 | awk '{print $9}'

elle me permet de détecter un champs sur un pdf. Par contre mon soucis :
la colonne n'est toujours pas 9, elle peut être la 10 à 12.

donc ma question :
peut-t-on mettre une variable à la place $9?

merci de votre aide

  • # Sans awk ?

    Posté par  . Évalué à 3.

    Quelle est la ligne renvoyée sans awk ? (C'est pour comprendre ce que tu cherches à obtenir).

    • [^] # Re: Sans awk ?

      Posté par  . Évalué à 2. Dernière modification le 10 janvier 2023 à 11:33.

      Merci de ta réponse.

      christophe $ pdfgrep --max-count 1 "Date" $fichier1
      
       48 avenue d'Orléans - CS 70842                                              W de colisage         
       366705      Datefdatum:     4/01/23
      

      Dans ce cas là, j'essaie de récupérer la date.

      • [^] # Re: Sans awk ?

        Posté par  . Évalué à 5.

        Pourquoi pas :

        pdfgrep --max-count 1 -o "[0-9]+/[0-9]+/[0-9]+" $fichier1

        • [^] # Re: Sans awk ?

          Posté par  . Évalué à 3.

          ba c'est plus propre ce que tu me donne.

          merci :)

  • # de mémoire il me semble que oui

    Posté par  . Évalué à 3.

    peut-t-on mettre une variable à la place $9?

    Mais je ne sais plus comment. Peut-être qu'en cherchant au fin fond de fr.comp.os.unix il y aura une réponse ?

    • [^] # Re: de mémoire il me semble que oui

      Posté par  . Évalué à 6. Dernière modification le 10 janvier 2023 à 09:58.

      En fait c'est tout simple :

      echo "a b c" |  awk -v field=2 '{print $field}'
      b
      
      $ echo "a b c" |  awk -v field=3 '{print $field}'
      c
      
      

      l'option -v permet de passer des variables lors de l'appel de awk en ligne de commande.

      • [^] # Re: de mémoire il me semble que oui

        Posté par  . Évalué à 5.

        Oui c'est simple, et d'ailleurs si c'est toujours le dernier champs il y a la variable auto-alimentée à chaque ligne lue: NF (Number of Fields)

        print $NF

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.