[Shell] Modification de caracteres

Phil -  
 Phil -
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. gorkimat Messages postés 71 Statut Membre 9
     
    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
    0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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$
    ;-))
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      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? :-))
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        Salut,

        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 ;-)
        0
  3. Phil
     
    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 :)
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Supprime l'option "-r" et protège les accolades et les parenthèses avec des antislahs :
    sed  's/^\(.\{21\}\)/\1 f/' plop
    ;-))
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Phil
     
    HA HA ! Super ! Ca marche nickel chrome.

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

    Phil.
    0