Parsing de ligne ave awk

Bonsoir,
J'ai un petit soucis qui me tient à coeur, j'ai dans un script shell une boucle qui lit un fichier et n'en affiche que le dernier élément, après éxecution ce n'est pas vraiment ce que je désire, en fait la taille des lignes est aléatoire et la seule chose fixe c'est que je veux tous les éléments qui suivent le 4ème élément jusq'au dernier : actuellement j'ai donc

file=$(echo "$ligne" |awk '{print $NF}')

mais j'aimerais avoir $5 jusqu'à $NF, y-a-t-il un moyen simple ou dois ajouter une condition dans ma boucle ?

Merci!!!

4 réponses

  1. Merci beaucoup, la première réponse de tagadazou était un peu moins bonne car effectivement j'avais plusieurs espaces, mais la faute vient de moi car je ne précise pas grand chose dans ma question...

    La 2ème est celle que je pensais chercher, la troisième est surprenante car je ne la connaissais pas, j'ignorais le shift que je connaissais en PERL...

    Bravo donc à tous et merci...!
    0
    1. Modérateur
      Salut,

      Ou en shell pur :
      $ file="pim pam toc plouf grouik zou tac"
      
      $ echo $file
      
      pim pam toc plouf grouik zou tac
      
      $ set $file
      
      $ echo $*
      
      pim pam toc plouf grouik zou tac
      
      $ shift 4
      
      $ echo $*
      
      grouik zou tac
      
      $
      ;-))
      0
      1. Modérateur
        Salut,

        voici avec sed et awk
        file=$(echo pim pam toc plouf grouik zou tac | awk 'BEGIN{ORS=" "}{for(i=5;i<=NF;++i) print $i}')
        echo $file
        grouik zou tac
        file1=$(echo pim pam toc plouf grouik zou tac | sed -r 's/^([a-z]+\s*){4}//')
        echo $file1
        grouik zou tac
        --
        lami20j
        0
        1. tu tiens à ce que ce soit par awk ?
          parce que cut s'y prête très bien

          si ton délimiteur est un espace mettons
          cut -d' ' -f5- <<<"pim pam toc plouf grouik zou tac"
          grouik zou tac

          bon si le délimiteur est de longueur variable ça se complique...
          0