OVH Cloud OVH Cloud

supprimer blic de ligne + ligne vide pr

14 réponses
Avatar
Christophe PEREZ
Bonjour,

Mon problème est sans doute tout bête pour qui maîtrise, mais moi, je ne
trouve pas.

Avec sed, je cherche à supprimer un bloc de ligne dans un fichier texte
(ça je sais faire) mais aussi à supprimer la ligne vide qui le précède
forcément. Et là, je ne trouve pas...

Ex :
1. ligne 1
2. ligne 2
3.
4. ligne 4
5. ligne 5
6. ligne 6
7.
8. ligne 7

Je veux supprimer de la ligne 4 à la ligne 6 (sans les désigner par leur
numéro de ligne), mais aussi la ligne 3 avec.

(je me demande si je suis très clair).

Je continue mes recherches, mais si un passant connait la solution ;)

Merci d'avance.

4 réponses

1 2
Avatar
Marc Boyer
Le 12-12-2013, Olivier Miakinen <om+ a écrit :
Le 12/12/2013 10:30, Marc Boyer a écrit :

Sinon, une solution avec awk, c'est de considérer la ligne vide comme
délimiteur de bloc, et la fin de ligne comme délimiteur de champs.

On lit ainsi bloc par bloc, plutot que ligne par ligne.

A voir si ça s'adapte au problème réel.

awk -v RS='nn' -v FS='n' '{if ($1 !~ /ligne 4/) print $0;}' toto.txt



Pas bête, mais est-ce que ça ne risque pas de bouffer le dernier n
si le bloc cherché est à la fin ?



C'est bien le problème: tapé tel quel, ça rajoute des sauts de ligne
vers la fin, et je comprends pas trop pourquoi (même après avoir joué
avec ORS).

Comme la solution a déjà été donnée avec sed et ed, et que le
problème réel semblait un peu différent de que qui était demandé,
j'ai pas fouillé plus.

C'était juste pour dire que awk peut fonctionner en flux
d'enregistrement, et pas juste en flux de ligne, et que
j'utilise ça de temps en temps.

Marc Boyer
--
À mesure que les inégalités regressent, les attentes se renforcent.
François Dubet
Avatar
Olivier Miakinen
Bonjour,

Le 12/12/2013 15:29, Christophe PEREZ a écrit :

Je confirme, le retour de net-nntp/pan-0.139 à net-nntp/pan-0.135 ne
présente plus le problème.
Cependant, j'ai du mal à comprendre pourquoi seuls mes propres messages
sont squizzés comme ça. Peut-être un rapport avec l'encodage ou un truc
du genre.



Je n'ai rien vu de flagrant en comparant deux de tes articles écrits
avec les deux versions différentes.

Peut-être des n au lieu de rn dans la version 0.139 ? Note qu'il
n'y a rien qui puisse me faire croire que ce serait ça : c'est juste
que ce problème était arrivé récemment à Nemo, et que je ne voyais
rien non plus dans mon SeaMonkey (mais d'autres ont pu le voir avec
de meilleurs outils).

Pas trop le temps de chercher plus, j'ai un pb avec le nfs de
mon serveur :(



Bon courage.
Avatar
Christophe PEREZ
Le Thu, 12 Dec 2013 16:04:11 +0100, Olivier Miakinen a écrit :

Je n'ai rien vu de flagrant en comparant deux de tes articles écrits
avec les deux versions différentes.



Pour tout dire, quand je poste avec la 139 et que je fais un "récupérer
les nouveaux entêtes des groupes abonnés", j'ai les titres de mes posts
qui apparaissent, mais quand j'en sélectionne un, il ne passe jamais en
"lu", et je ne vois aucun contenu. De plus, ils ne sont pas inclus dans
le fil de discussion mais chacun comme un nouveau fil, et il m'est
indiqué un nombre de lignes (autour de 1700 et différents à chaque post)
sans rapport avec le nombre réel.
Enfin, quand je reviens dans le groupe de discussion, là, mes posts
n'existent plus du tout, ni dans le fil ni ailleurs...
Bref, un gros binz !
Avatar
Marc Boyer
Le 12-12-2013, Christophe PEREZ a écrit :
Le Thu, 12 Dec 2013 09:30:27 +0000, Marc Boyer a écrit :

awk -v RS='nn' -v FS='n' '{if ($1 !~ /ligne 4/) print $0;}' toto.txt



Donc /ligne 6/ et non pas /ligne 4/ non ?



Avec ce mini script awk, je dir que le fichier contient des enregistrements,
séparés par nn, et qu'à l'intérieur, les champs sont les lignes.

C'est 'grosso modo' equivalent à un
/ligne4/,/^$/d

Le $1, c'est la première ligne du champ, et $0, l'ensemble des lignes.

De toute les façons, ça ne semble pas faire ce qu'il faut avec l'un comme
avec l'autre.



En effet, il affiche pas tout à fait ce qu'on veut.
% awk -v RS='nn' -v FS='n' '{if ($1 !~ /ligne 4/) print $0;}' toto.txt
ligne 1
ligne 2
ligne 7

Je suis pour l'instant resté à la solution "ed" (qu'il m'a fallu rajouter
à mon système).



Très bien.

Marc Boyer
--
À mesure que les inégalités regressent, les attentes se renforcent.
François Dubet
1 2