Substitution(s) avec Vi

Résolu
Bonjour tout le monde,

un petit souci avec le fichier suivant:

+1 <?xml version="1.0" encoding="UTF-8"?>
+3 <IMAGE>
+4 <NAME>115-1503_IMG.jpg</NAME>
+5 <CAPTION>Image 1</CAPTION>
+6 </IMAGE>
+7 <IMAGE>
+8 <NAME>115-1503_IMG.jpg</NAME>
+9 <CAPTION>Image 2</CAPTION>
+10 </IMAGE>
+11 <IMAGE>
+12 <NAME>115-1503_IMG.jpg</NAME>
+13 <CAPTION>Image 3</CAPTION>
+14 </IMAGE>

ma question est la suivante:
je cherche à copier par exemple 20 fois les lignes 3 à 6 et ce, à la fin du fichier,
pour le moment j'ai essayé en faisant :3,6co$ ( soit une copie des lignes 3, 6 à la fin du fichier)
j'ai essayé en introduisant yy dedans, avec des "marques" => :'a,'b20co'c mais rien n'y fait

je vous remercie par avance pour votre aide

++

Poulpoul
Configuration: AIX 5.3
korn shell

9 réponses

  1. coucouille
    çà a l'air pas mal cette histoire,
    cependant je ne comprends pas le "seq" dans la variable, cela correspond à quoi exactement ?
    je suppose que c'est ce qui éxécute la multiplication ....
    merci merci
    ++
    1. Modérateur
      lami20j@debian:~$ cat poulpoul
       +1 <?xml version="1.0" encoding="UTF-8"?>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +7 <IMAGE>
       +8 <NAME>115-1503_IMG.jpg</NAME>
       +9 <CAPTION>Image 2</CAPTION>
       +10 </IMAGE>
       +11 <IMAGE>
       +12 <NAME>115-1503_IMG.jpg</NAME>
       +13 <CAPTION>Image 3</CAPTION>
       +14 </IMAGE>
      lami20j@debian:~$ for i in $(seq 20);do head -5 poulpoul | tail -4;done >> poulpoul_final
      lami20j@debian:~$ cat poulpoul_final >> poulpoul
      
      


      Le résultat
       +1 <?xml version="1.0" encoding="UTF-8"?>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +7 <IMAGE>
       +8 <NAME>115-1503_IMG.jpg</NAME>
       +9 <CAPTION>Image 2</CAPTION>
       +10 </IMAGE>
       +11 <IMAGE>
       +12 <NAME>115-1503_IMG.jpg</NAME>
       +13 <CAPTION>Image 3</CAPTION>
       +14 </IMAGE> 
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
       +3 <IMAGE>
       +4 <NAME>115-1503_IMG.jpg</NAME>
       +5 <CAPTION>Image 1</CAPTION>
       +6 </IMAGE>
      


      1. Modérateur
        En effet tu as raison

        mais elle est garder dans le buffer
        j'ai oublié une étape :-)) mais c'est vrai que c'est redondant,
        je reste toujours pour une commande que je ne la donne pas puisque je n'ai pas un environnement pour tester.

        - se placer sur la ligne 3
        - taper sur la touche 4 (pour quatre lignes)
        - appuyer 2 fois sur la touche d
        - 1 fois Ctrl+P
        - allez sur la dernière ligne (en fait il faut inserer un ligne vide à la fin)
        - 20 fois Ctrl+P
        1. si tu fais deux fois d tu supprimes la ligne... Je ne suis pas sur que ce soit ce qu'il veut, non?
          1. Modérateur
            Salut,

            alors pourquoi pas
            - se placer sur la ligne 3
            - taper sur la touche 4 (pour quatre lignes)
            - appuyer 2 fois sur la touche d
            - allez sur la dernière ligne (en fait il faut inserer un ligne vide à la fin)
            - 20 fois Ctrl+P

            Perso j'aurai préféré de le faire avec une commande, mais si tu le veux avec Vi
            1. oui, j'ai dit nawak, 4y et non y4 ... si cela ne marche pas... je ne sais pas alors.

              1. tu te places ligne 3
                4yy (lignes 3 4 5 et 6 en bufffer)
                tu te places derniere ligne fichier et tu fais 20 fois P (shift p) (copie 20 fois du buffer avant le curseur)
                Bonne journée.
                1. non çà ne passe pas,
                  ce qui me pose surtout problème ce sont les 20 copies à faire
                  je n'arrive qu'à en effectuer une seule, c'est triste ...
                  merci pour ton aide, je continue ma recherche
                  1. alors, je pense qu'on peut faire :

                    Tu te place sur la ligne 3, tu fais "y4" ça te copie les lignes, puis tu vas à la fin du fichier...avec $ maybe et tu fais "p", non?

                    ++