Bonjour,
je souhaite dans un fichier, remplacer un suite d'espace par un seul caractère.
j'ai testé s/ //g, mais chaque espace est remplacé, ce que je ne souhaite pas.
Quel syntaxe utiliser?
Merci
Kondor76
Discussion :
Bonjour,
je souhaite dans un fichier, remplacer un suite d'espace par un seul caractère.
j'ai testé s/ //g, mais chaque espace est remplacé, ce que je ne souhaite pas.
Quel syntaxe utiliser?
Merci
Kondor76
Salut,
Je dirais s/ //
Winnt
Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
Pensez au boutonsi votre problème est résolu.
C'est en Linuxant qu'on devient .... geek
Et c'est en LateXant qu'on devient flemmard
Mon blog tout neuf.
Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.
Bonjour,
Que souhaites-tu faire :
Remplacer toutes les suites de X espaces par le caractere _ : exemple avec 5 espaceExplication :
Code : Sélectionner tout - Visualiser dans une fenêtre à part :%s/\s\{5}/_/g
- :%s : remplacer dans tout le fichier
- / : separateur d'expression
- \s : le caractere espace
- \{5} : exactement 5 occurences de l'expression precedente (ici \s, donc 5 espaces)
- g : plusieurs fois par ligne si besoin
Remplacer tous les champs contenant au moins 2 espaces par le caractere _ :Explication :
Code : Sélectionner tout - Visualiser dans une fenêtre à part :%s/\s\s\+/_/g
- :%s : remplacer dans tout le fichier
- / : separateur d'expression
- \s : le caractere espace
- \s : un second caractere espace
- \+ : au moins une occurence de la derniere expression (donc ici au moins un deuxieme espace, jusqu'a l'infini)
- g : plusieurs fois par ligne si besoin
Tout ceci dans vim bien sur.
J'imagine que c'est pareil avec sed ?
Oui :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $> sed 's/\s\s\+/_/g' mon_fichier_source > mon_fichier_sortie
Salut,
Sans vouloir contredire voici ce que tu mets dans ton post
Et voici ce que je proposaisEnvoyé par kondor76
Il y a une petite différence notée en rouge : s/ //gEnvoyé par winnt
![]()
Winnt
Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
Pensez au boutonsi votre problème est résolu.
C'est en Linuxant qu'on devient .... geek
Et c'est en LateXant qu'on devient flemmard
Mon blog tout neuf.
Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.
Pour enrichir la base de connaissances :
Ceci :
fait encore autre chose : cela supprime uniquement le premier caractere espace de chaque ligne (enfin non, ca le remplace par "rien", et il suffit donc d'inserer le caractere voulu entre les deux /)
Code : Sélectionner tout - Visualiser dans une fenêtre à part :%s/ //
Merci de l'info gangsoleil.
Winnt
Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
Pensez au boutonsi votre problème est résolu.
C'est en Linuxant qu'on devient .... geek
Et c'est en LateXant qu'on devient flemmard
Mon blog tout neuf.
Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.
Une autre façon, qui a l'avantage d'être portable, de remplacer toute suite de plus d'un espace par un caractère, ici "_":
Code : Sélectionner tout - Visualiser dans une fenêtre à part :%s/ */_/g
Ou plus simplement:
(rien avant s, 2 espaces seulement avant l'étoile et un espace en remplacament
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed 's/ */ /g' monFichier
Ce n'est pas equivalent : dans ce cas, tu remplaces toutes les suites d'un ou plusieurs espaces par un seul.
Pour remplacer une suite d'espace par autre chose, tu n'as a priori que deux expressions regulieres correctes (plus des composees de celles-ci) :
- espace espace + --> espace suivi d'au moins un espace
- espace espace espace * --> 2 espaces suivis de 0 ou plusieurs espace(s)
Apres, ce n'est que de la syntaxe de remplacement,![]()
Partager