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
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