modification d'une chaine de caractere dans un fichier

modification d'une chaine de caractere dans un fichier - Shell/Batch - Programmation

Marsh Posté le 24-01-2007 à 16:16:22    

Bonjour à tous,
 
Je vous écris car je souhaiterai changer une chaîne de caractére dans un fichier.
Le problème est que cette chaîne de caractère est de la forme
toto_i_03_1_0 et je voudrais la changer en toto_i_02_1_0 avec i qui est une variable qui s'incrémente.
 
Je ne peux pas faire de grep par rapport à toto, car il y a aussi des chaînes du type toto_i_01....
Il faut aussi que cette chaîne de caractère reste à la même place relative dans le fichier, et que tout le reste soit inchangé.
 
Je ne sais pas si j'ai été très clair.
 
En tout cas merci pour votre aide.
Cordialement
Julian

Reply

Marsh Posté le 24-01-2007 à 16:16:22   

Reply

Marsh Posté le 24-01-2007 à 16:42:44    

Bonjour, j'ai lu ici que la procedure à suivre pour faire ça, c'est
Copier le fichier jusqu'a la section à modifier dans un nouveau fichier.
inserer dans le nouveau fichier les ecriture de modification.
copier le reste du fichier dans le nouveau fichier
renomer le nouveau fichier en fichier.


Message édité par Profil supprimé le 24-01-2007 à 16:43:27
Reply

Marsh Posté le 24-01-2007 à 21:44:18    

ironhead36t a écrit :

Bonjour à tous,
 
Je vous écris car je souhaiterai changer une chaîne de caractére dans un fichier.
Le problème est que cette chaîne de caractère est de la forme
toto_i_03_1_0 et je voudrais la changer en toto_i_02_1_0 avec i qui est une variable qui s'incrémente.
 
Je ne peux pas faire de grep par rapport à toto, car il y a aussi des chaînes du type toto_i_01....
Il faut aussi que cette chaîne de caractère reste à la même place relative dans le fichier, et que tout le reste soit inchangé.
 
Je ne sais pas si j'ai été très clair.
 
En tout cas merci pour votre aide.
Cordialement
Julian


Je n'ai pas vraiment compris ce que tu veux faire exactement, la logique du remplacement de la chaîne de caractères n'est pas claire.
Le mieux est que tu postes un exemple :
- Fichier en entrée (une dizaine de lignes suffit)
- Remplacement(s) à effectuer
- Fichier attendu en sortie
 
 
Jean-Pierre.

Reply

Marsh Posté le 24-01-2007 à 23:06:26    

ironhead36t a écrit :

Bonjour à tous,
 
Je vous écris car je souhaiterai changer une chaîne de caractére dans un fichier.
Le problème est que cette chaîne de caractère est de la forme
toto_i_03_1_0 et je voudrais la changer en toto_i_02_1_0 avec i qui est une variable qui s'incrémente.
 
Je ne peux pas faire de grep par rapport à toto, car il y a aussi des chaînes du type toto_i_01....
Il faut aussi que cette chaîne de caractère reste à la même place relative dans le fichier, et que tout le reste soit inchangé.
 
Je ne sais pas si j'ai été très clair.
 
En tout cas merci pour votre aide.
Cordialement
Julian


 
Pas vraiment clair. Essaye ceci

i=<valeur de depart>     # Puisque "i" est une variable qui s'incrémente elle a donc forcément une valeur de départ
while test $i -le <valeur_de_fin>
do
    sed -e "s/toto_$i_03_1_0/toto_$i_02_1_0/g" fichier_a_modifier >/tmp/copie
    mv /tmp/copie fichier_a_modifier
    i=`expr $i + 1`
done


Message édité par Sve@r le 24-01-2007 à 23:07:29

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 08-03-2007 à 00:13:55    

Tu peux aussi utiliser l'éditeur vi comme suit :
 
prompt> vi fichier
Taper ensuite  :1,$ s/_03_1_0/_02_1_0/g <enter>   (le : est à saisir)
Sauvegarder et quitter :x!

Reply

Marsh Posté le 12-10-2007 à 17:08:14    

http://windows.developpez.com/faq/ [...] place_word
 
Pour remplacer un mot par un autre mot dans un fichier ".txt" on peut utiliser la commande Switch: voici la syntaxe :  

Code :
  1. Switch fichier.txt «chaîne a remplacer» «chaîne de remplacement»


Message édité par Coolnut le 12-10-2007 à 17:19:35
Reply

Marsh Posté le 04-11-2007 à 22:04:18    

J'ai un peu près le même souci, sauf que j'aimerai utiliser une chaine "joker".
Par exemple, avec findstr, il suffit de mettre .*
 
J'ai essayé des tas de logiciels, et aucun ne propose cela ...
(et je me sens pas d'attaque pour installer linux et galérer en ligne de commandes ...)
 
 
Concrètement (un exemple...), imaginons que j'ai 2000 personnes (fichiers) répartit dans 500 familles (répertoires) avec tout un tas de données sur eux (200 lignes) parmis lesquels leur 10 fruits préférés et combien ils en mangent par jour.
 
fruit 1, fraise, 1
fruit 2, pomme, 2
fruit 3, rien
fruit 4, rien
 
fruit 1, framboise, 3
fruit 2, rien
fruit 3, fraise, 25
fruit 4, rien
 
Je voudrais, si c'est possible, un exemple de batch (ou un logiciel ...) me permettant de remplacer toutes les lignes contenant fruit + fraise.
Et ce, quelque soit le n° du fruit, et quelque soit la quantité consommé chaque jour.
Le problème, c'est que certaines lignes qui contiennent fruit ne doivent pas être remplacées, et d'autre contenant fraise non plus ...
 
En gros, ceci :
 
fruit *. fraise *.  ====> " fruit n° 1, fraise, 10 par jour pour tout le monde "
 
 
Désolé, il est nul mon exemple, mais je pense qu'il est comprehensible ... enfin j'espère.
D'avance, merci !
 
Cordialement.
 
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed