Parsing , awk , perl , sed

Résolu
Bonjour tt le monde,
je veux dans un fichier, mettre des séparateurs ";" , par exemple, dans des positions définies de chaque ligne de mon fichier je me fous du langage : perl, awk.

genre : dans les position 5, 11, 22 , 35 et 50 de tt les ligne mettre mon sépararteur
fichier initial:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

fichier final:

aaaa;aaaaaa;aaaaaaaaaaa;aaaaaaaaaaaaa;aaaaaaaaaaaaaaa;aaaaaaaaaaaa
aaaa;aaaaaa;aaaaaaaaaaa;aaaaaaaaaaaaa;aaaaaaaaaaaaaaa;aaaaaaaaaaaa
aaaa;aaaaaa;aaaaaaaaaaa;aaaaaaaaaaaaa;aaaaaaaaaaaaaaa;aaaaaaaaaaaa

merci

8 réponses

  1. Modérateur
    Salut,
    sed -e 's/.\{4\}/&;/;s/.\{11\}/&;/;s/.\{23\}/&;/;s/.\{37\}/&;/;s/.\{53\}/&;/'
    ;-))
    1. Modérateur
      Salut,
      perl -pi.bak -e 's/^(.{4})(.{7})(.{11})(.{13})(.{15})(.*)/$1;$2;$3;$4;$5;$6/' fichier
      --

      lami20j
      1. Pour les cinq premire ligne, elles commencent avec des vide qui n'ont pas été pris en charge par l'éditeur du forum.
        1. Merci pour vos réponse;

          pour le sed ça marche, mais pour le perl le fichier en sortie et pareil que celui en entré!!!
          une question : dans la commande
          perl -pi.bak -e 's/^(.{4})(.{7})(.{11})(.{13})(.{15})(.*)/$1;$2;$3;$4;$5;$6/' fichier

          c'est qoui le séparateur ???
          1. Modérateur
            Le séparateur est le ;
            voici chez moi
            ~/trash$ cat aaa
            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
            ~/trash$ perl -pi.bak -e 's/^(.{4})(.{7})(.{11})(.{13})(.{15})(.*)/$1;$2;$3;$4;$5;$6/' aaa
            ~/trash$ cat aaa
            aaaa;aaaaaaa;aaaaaaaaaaa;aaaaaaaaaaaaa;aaaaaaaaaaaaaaa;aaaaaaaaaaa
            aaaa;aaaaaaa;aaaaaaaaaaa;aaaaaaaaaaaaa;aaaaaaaaaaaaaaa;aaaaaaaaaaa
            aaaa;aaaaaaa;aaaaaaaaaaa;aaaaaaaaaaaaa;aaaaaaaaaaaaaaa;aaaaaaaaaaa
            ~/trash$ cat aaa.bak
            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
            ~/trash$

            1. En faite , ça marche mais juste pour six 6 substitutio une fois plus les fichier file et file.back ne subissent aucune modif!!!
              j'ai 13 emplacement ou je dois mettre le séparateur!!!
              il s'agit d'un problème de perl ou koi exactement???

              Merci
              1. Voilà le corp du fichier.

                "F" marque la fin du fichier, je l'ai mise , car je n'ai pas arrivé à joindre le fichier..

                XXXXXXXXX 000 XXXXXX 02/27/2008 0000 02/27/2008 2359 XXXXXXXXX XXXXXXF
                XRXXXXXX 000 XXXXXX 02/27/2008 1840 02/27/2008 1845 XXXXXXXXX XXXXXXF
                XXXXXXXXX 000 XXXXXX 02/27/2008 2215 02/27/2008 2300 XXXXXXXXX XXXXXXF
                ZXXXXXXXXX 000 XXXXXXXX 02/28/2008 0800 02/28/2008 0900 XXXXXXXXX XXXXXXF
                ZXXXXXXXXX 000 XXXXXXXX 03/01/2008 1200 03/01/2008 1300 XXXXXXXXX XXXXXXF
                ZXXRXXXX 000 XXXXXXXX 02/27/2008 2030 02/27/2008 2330 02/27/2008 XXXXXXXXX XXXF
                XXXXXXXXXX 000 XXXXXXXX XXXXXXXXX XXXXXXXX XXXF
                XXXXXXXXXC 000 XXXXXXXX 02/27/2008 1800 02/27/2008 2100 02/27/2008 XXXXXXXXX XXXF
                XXXXXXXXXX 000 XXXXXXXXXX 000 XXXXXX XXXXXXXX XXXXXXF
                XXXXXXXXXX 000 XXXXXXXSXX 000 XXXXXX XXXXXXXX XXXXXXF
                XXXXXXXXXX 000 XXXXXXXSXX 000 XXXXXX XXXXXXXX XXXXXXF
                XXXXXXXXXX 000 XXXXXXXSXX 000 XXXXXX XXXXXXXX XXXXXXXF
                XXXXXXXXXX 000 XXXXXXXSXX 000 XXXXXX XXXXXXXX XXXXXXXF
                XXXXXXXXXX 000 XXXXXXXSXX 000 XXXXXX XXXXXXXX XXXXXXXF
                XXXXXXXXXX 000 XXXXXXXSXX 000 XXXXXX XXXXXXXX XXXXXXXF
                XXXXXXXXXX 000 XXXXXXXSXG 000 XXXXXX XXXXXXXX XXXXXXXF
                XXXXXXXXXX 000 XXXXXXXSXH 000 XXXXXX XXXXXXXX XXXXXXXF
                XXXXXXXXXX 000 XXXXXXXSXI 000 XXXXXX XXXXXXXX XXXXXXXF
                XXXXXXXXXX 000 XXXXXXXSXJ 000 XXXXXX XXXXXXXX XXXXXXXF
                XXXXXXXXXX 000 XXXXXXXXXX 000 XXXXXX XXXXXXXX XXXXXXXF
                XXXXXXXXXX 000 XXXXXXXSXL 000 XXXXXX XXXXXXXX XXXXXXXF
                XXXXXXXXX 000 FXXXXXXXXL 000 XXXXXX 03/01/2008 2305 03/02/2008 0305 XXXXXXXXX XXXXXXXF