Ajouter un caractère dans un fichier avec vi
Résolu
chrischris
-
chrischris -
chrischris -
Bonjour,
Je cherche une manip sous vi ...
Donc dans un fichier j'ai des lignes. Certaines de ces lignes contienne des chiffres.
Je souhaite rajouter un caractère devant la suite de chiffre commençant par 1 2 ou 3.
Exemple :
toto 158569
je souhaite rajouter 033 devant le 1 ce qui donne : toto 033158569.
Je souhaite faire ça de façon automatique avec une commande sous vi (j'ai plusieurs lignes).
j'ai testé avec ce type de commande ==> :g/[123].....$/
Ça me sort bien toute les lignes désirées mais comment rajouter le 033 devant la chaine recherché ?
Voila : si un pro de VI passe pas là : Merci
Je cherche une manip sous vi ...
Donc dans un fichier j'ai des lignes. Certaines de ces lignes contienne des chiffres.
Je souhaite rajouter un caractère devant la suite de chiffre commençant par 1 2 ou 3.
Exemple :
toto 158569
je souhaite rajouter 033 devant le 1 ce qui donne : toto 033158569.
Je souhaite faire ça de façon automatique avec une commande sous vi (j'ai plusieurs lignes).
j'ai testé avec ce type de commande ==> :g/[123].....$/
Ça me sort bien toute les lignes désirées mais comment rajouter le 033 devant la chaine recherché ?
Voila : si un pro de VI passe pas là : Merci
A voir également:
- Ajouter un caractère dans un fichier avec vi
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Caractère ascii - Guide
- Fichier rar - Guide
6 réponses
Re,
Alors essaie
Maintenant tu comprends pourquoi j'ai dit J'aurai préféré avoir ton fichier. ;-)
Alors essaie
:%s/\<\([1-3]\)/033\1/cg
Maintenant tu comprends pourquoi j'ai dit J'aurai préféré avoir ton fichier. ;-)
Oula, Merci, Merci !
Alors il faut m'expliquer ..
Mais cela marche presque parfaitement oui. Par contre il rajoute aussi le 033 dans la série de chiffres si il y a un 1 dans la série. Pour mon fichier voici 3 lignes exemples
toto 158963
titi 589616
et fifi 356948
La commande rajoute bien 033 devant le 1 de toto et devant le 3 fifi mais elle rajoute aussi 033 devant le 1 situé dans la suite de chiffre a titi ... et là moi je ne veut pas (je veut filtrer juste sur le premier chiffre)
Alors il faut m'expliquer ..
Mais cela marche presque parfaitement oui. Par contre il rajoute aussi le 033 dans la série de chiffres si il y a un 1 dans la série. Pour mon fichier voici 3 lignes exemples
toto 158963
titi 589616
et fifi 356948
La commande rajoute bien 033 devant le 1 de toto et devant le 3 fifi mais elle rajoute aussi 033 devant le 1 situé dans la suite de chiffre a titi ... et là moi je ne veut pas (je veut filtrer juste sur le premier chiffre)
Oui et bien Merci ... cela fonctionne parfaitement ...
Par contre je n'ai pas tout compris ...le < et le \1/cg
Par contre je n'ai pas tout compris ...le < et le \1/cg
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
En fait ce n'est pas < mais \< ce qui veut dire limite de mots. Comme ça j'oblige que l'insertion se fera si et seulement devant le chiffre 1,2 ou 3 il y a une limite de mots (ce qu'on n'avait pas dans le 1er exemple)
\1 permet d'utiliser ceux qu'on a capturer avec les parenthèses donc pour écrire 033 suivi de chiffre respectif.
Sinon le chiffre qu'on a testé sera "mangé" par la regex.
Tu peux faire un test sans mettre \1 et tu verras la différence.
En fait ce n'est pas < mais \< ce qui veut dire limite de mots. Comme ça j'oblige que l'insertion se fera si et seulement devant le chiffre 1,2 ou 3 il y a une limite de mots (ce qu'on n'avait pas dans le 1er exemple)
\1 permet d'utiliser ceux qu'on a capturer avec les parenthèses donc pour écrire 033 suivi de chiffre respectif.
Sinon le chiffre qu'on a testé sera "mangé" par la regex.
Tu peux faire un test sans mettre \1 et tu verras la différence.