Remplacer une chaine de car variable dans un fichier

Résolu
tarek.benmohamed Messages postés 10 Statut Membre -  
tarek.benmohamed Messages postés 10 Statut Membre -
Bonjour,

Je souhaite remplacer dans un fichier la chaîne de car 1507 (position 40-44) par MT1507. Etant donné que la valeur de cette chaîne est variable je ne peux pas utiliser la commanda sed classique. (sed -i "s/201507/MT201507/" fichier)

Voici un exmple de la ligne de mon fichier :

0000 0001-01-01BDA 1507 M

Merci pour votre aide c'est urgent.

Cordialement,


A voir également:

2 réponses

UnGars
 
Salut,

En fonction de l'exemple donné et les explications fournies :

$ echo "0000 0001-01-01BDA 1507 M" | sed 's/.\{19\}/&MT/'
0000 0001-01-01BDA MT1507 M
0
tarek.benmohamed Messages postés 10 Statut Membre
 
Merci pour votre retour rapide.
La commande fonctionne trés bien par contre ca me décale le reste de la ligne de 2 car.

Résultat souhaité :
000000000VELFR12919 *FZY90 0000 0001-01-01BDA MT1507 M +00000000300

Résultat obtenu :
000000000VELFR80769 *FZY90 0000 0001-01-01BDA MT1507 M +00000000300

Y'a t-il un moyen de remplacer la chaîne sans décaler la suite de la ligne ?

D'avance merci
0
UnGars
 
Euh... en même temps c'est normal, puisqu'on rajoute 2 caractères à la ligne, non ? ;-\

De plus, l'exemple fourni (souhaité/obtenu), s'il n'est pas mis entre balises codes (<code>Le code ici</code>) ne nous montre pas la réalité de la chose ;-(
0
tarek.benmohamed Messages postés 10 Statut Membre
 
En fait l'idée consiste juste a remplacer la valeur "1507 blanc blanc" par MT1507 sans avoir à décaler la suite de la ligne.
0
UnGars > tarek.benmohamed Messages postés 10 Statut Membre
 
echo "0000 0001-01-01BDA 1507  M" | sed 's/\(.\{19\}\)\([^ ]*\)  \(.*\)/\1MT\2\3/'
0000 0001-01-01BDA MT1507M

ou
 sed 's/\(.\{19\}\)\([^ ]*\)  /\1MT\2/'
0
tarek.benmohamed Messages postés 10 Statut Membre
 
Merci ça marche maintenant.
Une dernière question please : je souhaite insérer 4 blanc entre CPN et 2015-12-13 sur l'exemple suivant :

302015-12-11CPN2015-12-13

Mille merci
0
UnGars > tarek.benmohamed Messages postés 10 Statut Membre
 
Si c'est le seul "CPN" de la ligne :
$ echo "302015-12-11CPN2015-12-13" | sed 's/CPN/&    /'
302015-12-11CPN 2015-12-13
0