Shell : afficher la ligne précédant un motif

Résolu
ging42 -  
 ging42 -
Bonjour,
Je souhaiterais afficher la ligne précédant celle où un motif donné a été trouvé, j'ai cherché sur internet et c'est possible avec sed :
sed -n '/motif/{g;1!p;};h' file.txt
Oui mais voilà, ça ne marche pas chez moi, ça affiche des lignes vides.
Par contre sed -n '/motif/{n;p;}' file.txt m'affiche bien la ligne située après le motif...
Que faire ?
Merci d'avance pour vos réponses.

6 réponses

  1. swed
     
    Halala,
    Il faudrait faire un forum spécial pour jipicy ;)
    0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    ça fonctionne
    $ cat a4
    aaa
    bbb
    ccc
    ddd
    eee
    $ sed -n '/ccc/{g;1!p;};h' a4
    bbb
    $ 
    0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Il faudrait faire un forum spécial pour jipicy ;)
    En ce cas il devra être payer, et il n'aura plus le droit de dormir ;-DDD
    0
  4. ging42
     
    Bon j'ai créé le même fichier que toi, et bien non ça n'affiche qu'une ligne vide... C'est pas grave j'ai trouvé un moyen de contourner ce problème.

    Merci quand même !
    0
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      qu'affiche sed --version
      chez moi: GNU sed version 4.2.1
      0
    2. ging42
       
      Chez moi ça affiche "Illegal option"... :(
      0
    3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      sur quel système ?
      et sed -v ?
      0
    4. ging42
       
      Pour sed-v, c'est aussi une option illégale.
      C'est un systmèe AIX.
      0
    5. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      c'est donc un "vieux" sed
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    ou ceci qui doit fonctionner avec le plus archaique des awk
    $ awk '{n[NR]=$0} ; /ddd/ {print n[NR-1];exit}' a4 
    ccc 
    $
    0
  7. ging42
     
    Whaou merci beaucoup, effectivement ça marche !!! :)
    0