[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.
A voir également:

5 réponses

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
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
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
jipicy Messages postés 41342 Statut Modérateur 4 896 > lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité
 
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
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
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Supprime l'option "-r" et protège les accolades et les parenthèses avec des antislahs :
sed  's/^\(.\{21\}\)/\1 f/' plop
;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

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

Phil.
0