Supprimer la ligne précédante

Résolu
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. Modérateur
    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
    1. Bonjour jipicy; merci bcp pour la réponse ça marche très bien
      0
      1. Modérateur
        Salut Baladia,

        De rien ;-))
        0
    2. 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. Modérateur
        sed '/^$/d;N;/\n0/d' plop

        ;-))
        0
    3. 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. Modérateur
        /^$/
        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