Parsing de ligne ave awk

MArsdu13 -  
 Marsdu13 -
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. Utilisateur anonyme
     
    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
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  4. Marsdu13
     
    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