phdenis a écrit :
Re,
En essayant d'analyser l'expression du sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba' file
J'avoue ne pas tout avoir compris ...
Le sed -e :a correspond à une etiquette
et aprés -e '/^\n*$/{$d;N;};/\n$/ba' -> ^\n*$ -> toutes les lignes vides ...
->{$d;N;} apparement c'est la que ca bloque ... Tu comprends cette partie ? J'ai compris que l'on remplace toutes les lignes vides par un seul retour à la ligne à partir de l'étiquette ba ..
Non, si tu as des indices je suis preneur ?
|
Tu n'es pas loin (un peu à côté )
Déjà un bon truc pour pas se paumer avec sed, c'est de bosser avec des lignes numérotées, genre
yes | head -10 | cat -n | sed blablabla |
Pour comprendre $d, regarde ce que fait :
yes | head -10 | cat -n | sed '6,$ d' |
Pour N, il faut comprendre comment marche sed. En gros :
- sed prend une ligne du fichier en entrée, et la copie dans le "pattern space"
- on applique la première commande sed sur le pattern space
- on applique la seconde commande sed sur le pattern space
- etc etc
- quand on a appliqué tout, on copie le pattern space (qu'on a bien modifié ) vers stdout
- on lit la ligne suivante
Test un petit :
yes | head -10 | cat -n | sed -e '/8/{N;/9/d}' |
Ca devrait aller mieux...
edit :
Par contre pour vim on s'en fout hein, à priori tu te fais une fonction qui va à la fin du fichier et qui delete tant que c'est vide, et ca devrait marcher tout seul .
Un truc genre :
aller à la fin du fichier, fin de la dernière ligne :
rechercher (à contresens) une ligne non-vide :
Bon ce . est très limite, libre à toi de mettre une regexp plus poussée.
- si tu veux virer les lignes non-vides mais contenant juste des espaces/tabulations . sera trop tolérant pour toi
- si tu es au début d'une ligne non-vide, ?. ira matcher la fin de la ligne précédente (c'est pour ca que je commence par G$ et pas seulement G)
effacer les lignes blanches entre ici et la fin du fichier :
Message édité par Xavier_OM le 03-07-2007 à 11:43:54
---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.