Changer un mot !!
se7en
-
asevere Messages postés 13095 Date d'inscription Statut Webmaster Dernière intervention -
asevere Messages postés 13095 Date d'inscription Statut Webmaster Dernière intervention -
Bonjour,
Dans un fichier de commande j'ai un mot qui vient se repeter plusieurs fois & je souhaiterais le changer par un autre mot sans être obligé de faire le changement mot par mot ... Existe-t-il une commande ou faut-il cree un batch ...
Merci de votre aide.
Dans un fichier de commande j'ai un mot qui vient se repeter plusieurs fois & je souhaiterais le changer par un autre mot sans être obligé de faire le changement mot par mot ... Existe-t-il une commande ou faut-il cree un batch ...
Merci de votre aide.
A voir également:
- Changer un mot !!
- Changer dns - Guide
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
- Changer mot de passe administrateur windows 10 - Guide
- Mot de passe bios perdu - Guide
4 réponses
Salut,
Regarde avec les filtres "sed" et "tr" :
Z'@+...che.
Regarde avec les filtres "sed" et "tr" :
sed 's/mot1/mot2/g' le_fichier >le_fichier.bisou
cat fichier | tr "mot1" "mot2" >le_fichier.bis;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Oui,
Ou sans créer de fichier .bis, en utilisant l'éditeur vi, comme çà
Si tu dois faire beaucoup de manipulations sur des fichiers ASCII, celà vaut vraiment le coup d'apprendre à maîtriser vi (ou "vim", qui est plus fonctionnel). Avec quelques touches tu fais des merveilles !
Dal
Ou sans créer de fichier .bis, en utilisant l'éditeur vi, comme çà
vi le_fichier :%s/mot1/mot2/g :wq
Si tu dois faire beaucoup de manipulations sur des fichiers ASCII, celà vaut vraiment le coup d'apprendre à maîtriser vi (ou "vim", qui est plus fonctionnel). Avec quelques touches tu fais des merveilles !
Dal
Okies :)
Mais alors il faudra avec sed qu'il supprime le "fichier" et renomme "fichier.bis" en "fichier".... Enfin, du moins avec mon sed (sur ma boite FreeBSD 4.9) j'obtiens un fichier vide avec ta commande si je met le même nom en entrée et sortie (ma version de sed ne semble pas gérer une ouverture et écriture simultanée sur le même nom de fichier). Ta version agit peut-être différemment.
J'ai essayé "tr" aussi, que je ne connaissais pas. La commande produit un fichier bizarre chez moi avec ta syntaxe. Des caractères sont substitués un peu partout, en plus des mots ... :(
Dal
Mais alors il faudra avec sed qu'il supprime le "fichier" et renomme "fichier.bis" en "fichier".... Enfin, du moins avec mon sed (sur ma boite FreeBSD 4.9) j'obtiens un fichier vide avec ta commande si je met le même nom en entrée et sortie (ma version de sed ne semble pas gérer une ouverture et écriture simultanée sur le même nom de fichier). Ta version agit peut-être différemment.
J'ai essayé "tr" aussi, que je ne connaissais pas. La commande produit un fichier bizarre chez moi avec ta syntaxe. Des caractères sont substitués un peu partout, en plus des mots ... :(
Dal
Pour sed, il faut soit faire un cat du fichier et un pipe vers sed soit avoir la bonne version de sed qui permette de faire un backup automatique :)
Dans le premier cas, c"'est juste une histoire d'ordre dans lequel ton interpreteur execute la commande:
Dans le cas d'une redirection, il commence normalement pas ouvrir le fichier cible, donc par l'effacer dans le cas de >
...Mana mana
Tutudutu...
Dans le premier cas, c"'est juste une histoire d'ordre dans lequel ton interpreteur execute la commande:
Dans le cas d'une redirection, il commence normalement pas ouvrir le fichier cible, donc par l'effacer dans le cas de >
...Mana mana
Tutudutu...
Exact ;-)
Bon j'ai les mêmes résultats chez moi (pour "sed"). Ça m'apprendra à répondre sans tester ;-)))
Pour mes versions :
Z'@+...che.
Bon j'ai les mêmes résultats chez moi (pour "sed"). Ça m'apprendra à répondre sans tester ;-)))
Pour mes versions :
[jp@Mandrake jp]$ sed -V GNU sed version 3.02 [jp@Mandrake jp]$ tr --version tr (textutils) 2.1 Écrit par Jim Meyering.Sinon, comme le dit "Adrien" avec un "cat" et un "pipe", ça marche :
cat essai | sed 's/mot5/mot1/g' > essaiSinon, avec un "pipe" de plus et la commande "mv" ça le fait aussi :
sed 's/mot1/mot2/g' < essai > essai2 | mv -f essai2 essaiPas très élégant certes, mais tout aussi efficace. Ça marche aussi pour "tr" :
cat essai | tr "mot5" "mot1" > essai;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Yop, rien ne vaut les tests, mais rien ne vaut une bonne mise à jour de sed!!! :)
Maintenant que je suis rentré je peux tester sans craintes:
Bon, si mes souvenir sont exacts, l'option interéssante de sed et arrivé à la version 4.0.7, ou par là :)
PS: JP, envoies moi un mél! :)
@++
...Mana mana
Tutudutu...
Maintenant que je suis rentré je peux tester sans craintes:
[adrien@XP1800+ sed_test]$ sed -V GNU sed version 4.0.9 Copyright (C) 2003 Free Software Foundation, Inc. [adrien@XP1800+ adrien]$ md sed_test && cd sed_test [adrien@XP1800+ sed_test]$ cat > fichier_test << EOF > XXXX > truc > XXXX > chose > bidule > XXXX > EOF [adrien@XP1800+ sed_test]$ ls -l total 4 -rw-r--r-- 1 adrien adrien 33 oct 29 21:08 fichier_test [adrien@XP1800+ sed_test]$ cat fichier_test XXXX truc XXXX chose bidule XXXX [adrien@XP1800+ sed_test]$ sed -i.anc 's/XXXX/YYYY/g' fichier_test [adrien@XP1800+ sed_test]$ ls -l total 8 -rw-r--r-- 1 adrien adrien 33 oct 29 21:09 fichier_test -rw-r--r-- 1 adrien adrien 33 oct 29 21:08 fichier_test.anc [adrien@XP1800+ sed_test]$ diff fichier_test fichier_test.anc 1c1 < YYYY --- > XXXX 3c3 < YYYY --- > XXXX 6c6 < YYYY --- > XXXX [adrien@XP1800+ sed_test]$C'est quand même vachtement bien plusse propre! :D
Bon, si mes souvenir sont exacts, l'option interéssante de sed et arrivé à la version 4.0.7, ou par là :)
PS: JP, envoies moi un mél! :)
@++
...Mana mana
Tutudutu...
tr va remplacer
m->m
o->p
t->t
1->2
Ce qui n'est pas l'effet escpmpté.
Johan
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)