[Shell] Modification de caracteres

Bonjour, voiçi une ligne d'un fichier :
2004/02/14 16:45:45.6     51.5263   16.1589      2.0    EMSC      00000165

Je voudrais placer un " f " au 22ième caractère. Je voudrais le faire automatiquement car c'est à appliquer à plusieur fichiers.
A la fin j'aimerais obtenir :
2004/02/14 16:45:45.6 f   51.5263   16.1589      2.0    EMSC      00000165


Quelqu'un à une idée ? peut-être avec sed mais je n'ai pas de caractère d'origine à remplacer puisque c'est un espace :(

Merçi d'avance.
Configuration: Windows XP
Firefox 2.0.0.4

5 réponses

  1. Salut,

    Voici une piste avec awk (peut-être un peu barbare mais bon ...)

    awk '
      {Chaine1=substr($0,1,21)
       Chaine2=substr($0,23)
       print "Initial : "$0
       print "Modifier : "Chaine1"f"Chaine2
       print "\n"}
    ' fictest.txt
    


    Bon courage

    Gorki
    1. Modérateur
      Salut,

      Essaie ça :
      jp@MDK:~/tmpfs ssh$ cat plop
      
      2004/02/14 16:45:45.6     51.5263   16.1589      2.0    EMSC      00000165
      
      jp@MDK:~/tmpfs ssh$ sed -r 's/(^.{21})(.*)/\1 f\2/' plop
      
      2004/02/14 16:45:45.6 f     51.5263   16.1589      2.0    EMSC      00000165
      
      jp@MDK:~/tmpfs ssh$
      ;-))
      1. Modérateur
        Salut,

        sed -r 's/(^.{21})(.*)/\1 f\2/' plop
        P'tite question :-)

        ça ne suffit pas comme ça?
         sed -r 's/^(.{21})/\1 f/' plop

        et pourquoi capturer le début de ligne qui est une assertion de largeur nulle ?

        Voilà ça fait 2 p'tites questions? :-))
      2. Modérateur
        @lami20jSalut,

        1 - Oui

        2 - Parce que ça me plaît et que je suis pas une faignasse de Perlien môa ! NaméO ! ;-DDD

        Bien vu ;-)
    2. Merçi les gars d'avoir répondu aussi rapidement mais ça ne marche pas chez moi.
      Si je met l'option -r j'ai le message : --r illegal option. Mauvaise version de sed ??!
      j'ai essayé en mettant d'autre lettre mais j'ai le message command garbled.
      Bon, je vais continuer dans cette voie en fouillant le man mais si vous avez une idée du problème n'hésitez pas à m'en faire part.

      Merçi d'avance.

      A plus :)
      1. Modérateur
        Supprime l'option "-r" et protège les accolades et les parenthèses avec des antislahs :
        sed  's/^\(.\{21\}\)/\1 f/' plop
        ;-))
        1. HA HA ! Super ! Ca marche nickel chrome.

          Merçi beaucoup Jipicy, j'y arrivais pas du tout.

          Phil.