Eliminer les lignes sous condition

Résolu
jhoncoke Messages postés 44 Statut Membre -  
jhoncoke Messages postés 44 Statut Membre -
Bonjour,

J'ai fichier txt de 4 colonnes de nombre réels.
Je cherche à faire un script bash pour éliminer toutes les lignes dont la colonne 4 est nulle à condition que la colonne des lignes i-1 et i+1 soient nulles aussi.
La colonne 4 présente parfois une suite de 0 et je veux garder le premier et le dernier et éliminer le reste.
Quelqu'un saurait m'aider?
Merci :)

3 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Sur le bout de fichier que tu m'as passé, cette syntaxe avec "sed" marche :

    $ cat plop
    50.0976 4.52132 156.2 15.6
    50.0979 4.52071 149.5 0.0
    50.0979 4.52071 149.5 0.0
    50.0979 4.52071 149.6 0.0
    50.0979 4.52071 149.6 0.0
    50.0979 4.52078 161.3 4.9
    50.0958 4.5249 146.6 0.0
    50.0948 4.52616 148.4 30.8
    
    $ sed  '/0.0$/{N;:z;/0.0$/{N;/0.0$/{s/.*\n//2M;bz;}}};' plop
    50.0976 4.52132 156.2 15.6
    50.0979 4.52071 149.5 0.0
    50.0979 4.52071 149.6 0.0
    50.0979 4.52078 161.3 4.9
    50.0958 4.5249 146.6 0.0
    50.0948 4.52616 148.4 30.8
    
    $
    1
    1. jhoncoke Messages postés 44 Statut Membre
       
      ça fonctionne !! Merci :)
      0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Merci de poster un exemple concret de ton fichier, sans quoi on risque de partir dans tous les sens...

    Une piste : awk
    0
  3. jhoncoke Messages postés 44 Statut Membre
     
    Voici un bout de mon fichier:

    50.0976 4.52132 156.2 15.6
    50.0979 4.52071 149.5 0.0
    50.0979 4.52071 149.5 0.0
    50.0979 4.52071 149.6 0.0
    50.0979 4.52071 149.6 0.0
    50.0979 4.52078 161.3 4.9
    50.0958 4.5249 146.6 0.0
    50.0948 4.52616 148.4 30.8

    Dans ce bout, il faut retirer les lignes 3 et 4 uniquement. Pcq leurs 4ème colonne est nulle et ainsi que celle des lignes avant et après elles. Par contre les lignes 2,5, 7 il faut pas les eliminer pcq la colonne 4 des lignes avant et/ou après elles ne sont pas nulles.

    Merci
    0