Supprimer la ligne précédante

Résolu
Baladia Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
Baladia Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

5 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
Baladia Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour jipicy; merci bcp pour la réponse ça marche très bien
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut Baladia,

De rien ;-))
0
Baladia Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
sed '/^$/d;N;/\n0/d' plop

;-))
0
Baladia Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
/^$/
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Baladia Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
merci bcp
0