Supprimer la ligne précédante

Résolu
Baladia Messages postés 7 Statut Membre -  
Baladia Messages postés 7 Statut Membre -
Bonjour à tous,

Je souhaite suuprimer la ligne précédante dans un fichier si la ligne courante commence par zéro, je suis sur unix AIX exemple

Message 1
0 rows

Message 1
1 rows

Message 1
0 rows

donc l arésultat que je veux est :

Message 1
1 rows

Merci pour vos réponses.

5 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    jp@MDK:~/tmpfs ssh$ cat plop
    Message 1
    0 rows
    
    Message 1
    1 rows
    
    Message 1
    0 rows
    
    jp@MDK:~/tmpfs ssh$ sed '/^$/!N;/\n0/d' plop
    
    Message 1
    1 rows
    
    jp@MDK:~/tmpfs ssh$

    ;-))
    1
  2. Baladia Messages postés 7 Statut Membre
     
    Bonjour jipicy; merci bcp pour la réponse ça marche très bien
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Salut Baladia,

      De rien ;-))
      0
  3. Baladia Messages postés 7 Statut Membre
     
    j"ai une autre question; est ce qu'il y a un moyen pour supprimer le videengendré par la suppression des deux lignes car si on a un fichier qui contient 3000 lignes et si on supprime par exemple 2000 on va avoir un fichier avec 2000 lignes vide
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      sed '/^$/d;N;/\n0/d' plop

      ;-))
      0
  4. Baladia Messages postés 7 Statut Membre
     
    vraiment chappeau à vous; ça marche très bien

    Est ce que j'ai le droit à une petite explication car je suis nouveau sous unix?

    Merci bcp une autre fois
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      /^$/
      On cherche un motif (tout ce qui se trouve entre les slashs) représentant une ligne vide (^ est le caractère représentant le début d'un ligne et $ représente la fin de la ligne), donc si il n'y a rien entre ces 2 caractères, c'est forcément que la ligne est vide.

      d
      On supprime la ligne vide avec la commande "d" (delete)

      N
      Si la ligne n'est pas vide, on ajoute la ligne suivante dans l'espace de travail.

      /\n0/
      Si dans les 2 lignes présentent dans l'espace de travail on trouve le motif constitué du caractère nouvelle ligne (\n) suivi par un zéro (0)

      d
      On supprime ces 2 lignes.


      Pour de plus amples renseignements sur la commande "sed", voir la FAQ :
      Sed
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Baladia Messages postés 7 Statut Membre
     
    merci bcp
    0