Ajouter un caractère dans un fichier avec vi

Résolu
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
Configuration: Linux
Firefox 3.5.7

6 réponses

  1. lami20j
     
    Re,

    Alors essaie
    :%s/\<\([1-3]\)/033\1/cg

    Maintenant tu comprends pourquoi j'ai dit J'aurai préféré avoir ton fichier. ;-)
    1
  2. lami20j
     
    Salut,

    Essaie comme ça
    :%s/\([1-3][0-9]\+\)/033\1/cg

    J'aurai préféré avoir ton fichier.
    0
  3. chrischris
     
    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)
    0
  4. chrischris
     
    Oui et bien Merci ... cela fonctionne parfaitement ...

    Par contre je n'ai pas tout compris ...le < et le \1/cg
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j
     
    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.
    0
  7. chrischris
     
    Merci beaucoup,

    je vais faire différents test afin de bien comprendre.

    Bonne soirée
    0