Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1453 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  modification d'une chaine de caractere dans un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

modification d'une chaine de caractere dans un fichier

n°1506831
ironhead36​t
Posté le 24-01-2007 à 16:16:22  profilanswer
 

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

mood
Publicité
Posté le 24-01-2007 à 16:16:22  profilanswer
 

n°1506841
Profil sup​primé
Posté le 24-01-2007 à 16:42:44  answer
 

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
n°1506950
aigles
Posté le 24-01-2007 à 21:44:18  profilanswer
 

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.

n°1506973
Sve@r
Posté le 24-01-2007 à 23:06:26  profilanswer
 

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.
n°1525618
neoraider
Posté le 08-03-2007 à 00:13:55  profilanswer
 

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!

n°1623127
Coolnut
Posté le 12-10-2007 à 17:08:14  profilanswer
 

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
n°1636547
Ctrl-Alt-S​uppr59
Posté le 04-11-2007 à 22:04:18  profilanswer
 

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.
 
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  modification d'une chaine de caractere dans un fichier

 

Sujets relatifs
chaine de caractèreForcer l'ouverture d'un fichier d'une page html
données fichier texte vers BDDLecture d un fichier (presque) text
[PERL] Ajouter des balises dans un fichier XMLpb scipt shell comparer un argument a une valeur dan un fichier
Fichier AuthorizedKeysFile[Java] Crypter un fichier avec le support du multi-threading?
Plus de sujets relatifs à : modification d'une chaine de caractere dans un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR