Eliminer les lignes sous condition

Résolu
jhoncoke Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -  
jhoncoke Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -
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

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
jhoncoke Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 
ça fonctionne !! Merci :)
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

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

Une piste : awk
0
jhoncoke Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 
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