[Shell] Modification de caracteres

Fermé
Phil - 7 juin 2007 à 09:41
 Phil - 8 juin 2007 à 13:16
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 70 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 1 mars 2012 9
7 juin 2007 à 11:26
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
7 juin 2007 à 12:21
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 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
7 juin 2007 à 12:49
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
7 juin 2007 à 14:31
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
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
7 juin 2007 à 14:40
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
HA HA ! Super ! Ca marche nickel chrome.

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

Phil.
0