Subsitution // sed
Résolu
Poulpoul
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
dans un fichier texte, comportant une ligne de texte puis deux lignes vides comme suit:
bla bla bla
bla bla bla
bla bla bla
je souhaiterais pouvoir supprimer une ligne vide sur 2 sur tout le texte,
j'ai essayé avec
:%s/^$/d
sed '1~2 s/^$/d ' fichier
rien n'y fait
si vous avez une idée,
en vous remerciant par avance,
PS: je suis sous AIX 5.3
++
Poulpoul
dans un fichier texte, comportant une ligne de texte puis deux lignes vides comme suit:
bla bla bla
bla bla bla
bla bla bla
je souhaiterais pouvoir supprimer une ligne vide sur 2 sur tout le texte,
j'ai essayé avec
:%s/^$/d
sed '1~2 s/^$/d ' fichier
rien n'y fait
si vous avez une idée,
en vous remerciant par avance,
PS: je suis sous AIX 5.3
++
Poulpoul
Configuration: Ubuntu 7.10 // AIX 5.3
5 réponses
-
Salut,
S'il n'y a que deux ligne vides consécutives :sed '/^$/N;/^\n$/s/^\n$//'
Sinon si plus de deux lignes vides consécutives :sed '/^$/{:z;N;/^\n$/s/^\n$//;tz}';-))
-
merci beaucoup Jipicy
c'est impec
y aurait il possibilité de détailler les commandes ?
la première je vois à peu près, la seconde un peu plus complexe ...
merci par avance, -
La 1ère :
'/^$/ Si la ligne est vide N On ajoute la suivante /^\n$/ Si la ligne ne contient qu'un caractère "fin de ligne" s/^\n$//' On le supprime
Pour la 2nd :'/^$/{ Début commandes groupées. Si la ligne est vide :z Étiquette N On ajoute la suivante /^\n$/ Si la ligne ne contient qu'un caractère "fin de ligne" s/^\n$// On le supprime tz Si une substitution a eu lieu, on se branche à l'étiquette }' Fin commandes groupées
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
De rien ;-))