Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Supprimer des espaces dans des zones délimitées par des points-virgule

4 réponses
Avatar
Marbolito
Bonjour,

Je dispose d'un fichier =AB texte =BB dans lequel j'ai des zones
d=E9limit=E9es par des points-virgules (utilisable pour Excel). Ce
fichier a =E9t=E9 g=E9n=E9r=E9 par un programme Microfocus et j'aimerais,
=E0 l'issue de l'ex=E9cution de ce programme, supprimer les espaces
entre chaque point-virgule.

Je m'explique...

Le programme me g=E9n=E8re les informations suivantes :
JEAN ;DUPONT ; ;15 RUE DE LA PAIX ;78100 ;SAINT
GERMAIN EN LAYE

Je voudrais que le r=E9sultat final soit le suivant :
JEAN ;DUPONT ;;15 RUE DE LA PAIX ;78100 ;SAINT GERMAIN EN LAYE
=20
Avez-vous une solution =E0 me proposer ?=20

Merci

4 réponses

Avatar
Vincent Lefevre
Dans l'article ,
Marbolito écrit:

Le programme me génère les informations suivantes :
JEAN ;DUPONT ; ;15 RUE DE LA PAIX ;78100 ;SAINT
GERMAIN EN LAYE

Je voudrais que le résultat final soit le suivant :
JEAN ;DUPONT ;;15 RUE DE LA PAIX ;78100 ;SAINT GERMAIN EN LAYE

Avez-vous une solution à me proposer ?


Un truc du style: perl -pe 's/ +;/ ;/g; s/(?<=;) ;/;/g' <fichier>

Le "s/ +;/ ;/g;" permet de remplacer une suite non nulle d'espaces
suivie d'un point-virgule par une seule espace suivie d'un
point-virgule, et le "s/(?<=;) ;/;/g" permet de supprimer une
espace entre 2 points-virgules. Noter qu'on ne peut pas utiliser
"s/; ;/;;/g" car une seule espace serait supprimée dans "; ; ;".
Je ne sais pas si c'est ce que tu veux exactement, mais ça suit
l'exemple ci-dessus, ainsi que:

$ echo 'ab ; ; ; ;cd; ef ; g' | perl -pe 's/ +;/ ;/g; s/(?<=;) ;/;/g'
ab ;;;;cd; ef ; g

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
Marbolito
Bonjour,

Je vous remercie pour la solution proposée : elle me convient à 99%.
Pouvez-vous m'indiquer la syntaxe afin de supprimer l'espace juste
avant le point-virgule ?

Je m'explique :
Au lieu d'avoir "ab ;;;;cd; ef ; g" j'aimerais avoir comme résultat
"ab;;;;cd; ef; g"

merci
Avatar
JustMe
Marbolito a écrit
Bonjour,

Je vous remercie pour la solution proposée : elle me convient à 99%.
Pouvez-vous m'indiquer la syntaxe afin de supprimer l'espace juste
avant le point-virgule ?

Je m'explique :
Au lieu d'avoir "ab ;;;;cd; ef ; g" j'aimerais avoir comme résultat
"ab;;;;cd; ef; g"

merci



sed 's/ *;/;/g'

Avatar
Marbolito
ça me convient parfaitement : je vous remercie tous les deux