IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Remplacer un mot par un autre dans un fichier


Sujet :

Linux

  1. #1
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut Remplacer un mot par un autre dans un fichier
    Bonjour,

    Je recherche une commande si elle existe ou un moyen de remplacer un mot par un autre dans le fichier d'origine sans devoir passer par un fichier intermédiaire ..

    Par exemple avec la commande sed il est possible de remplacer mais je ne peux pas écrire dans le même fichier que celui que je passe en paramétre

    si le fichier d'orgine contient ceci
    mot1

    et que j'applique la comande suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sed -e "s/mot1/mot2/g" fichier

    j'aurais en "sortie"

    mot2

    mais si je fais un cat sur le fichier j'aurais toujours "mot1"

    y aurait-il une astuce afin de remplacer réellement le mot1 par mot2 dans le fichier lui même ou n'est ce pas possible ?

    Merci
    c@simir

  2. #2
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    etienne@info1:~/test $ cat aze_123
    bla
    bli
    bla
    etienne@info1:~/test $ cat aze_123 | sed 's/bli/bla/g' > aze_123
    etienne@info1:~/test $ cat aze_123
    bla
    bla
    bla
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  3. #3
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    pour moi ça ne fonctionne pas mon fichier se trouve alors vide ...

    comprends pas
    c@simir

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Pour tout te dire, ça m'étonnait que ça marche chez moi.
    Le comportement que tu décris est normal.

    Essaie de glisser un -u après le sed, peut être que ça résoudra le problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     cat aze_123 | sed -u 's/bli/bla/g' > aze_123
    sinon tu peux passer par un fichier tampon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cat aze_123 | sed 's/bli/bla/g' > monfichiertampon
    cat monfichiertampon > aze_123
    Ou utiliser du perl ...
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  5. #5
    zul
    zul est déconnecté
    Membre éclairé Avatar de zul
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 498
    Points : 699
    Points
    699
    Par défaut
    Tu peux utiliser cela pour faire ca "sur place"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vim -c "%s/titi/toto/g" -c "wq" file
    Mais pourquoi veut tu absolument le faire "sur place" ?

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -i -pe 's/bla/bli/g' file
    Si tu veux avoir un backup avec une extension .bak en plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -i.bak -pe 's/bla/bli/g' file
    Tu peux mettre toute une liste de fichier pour les traiter d'un coup si tu veux.

    --
    Jedaï

  7. #7
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Citation Envoyé par vbcasimir
    Bonjour,

    Je recherche une commande si elle existe ou un moyen de remplacer un mot par un autre dans le fichier d'origine sans devoir passer par un fichier intermédiaire ..

    Par exemple avec la commande sed il est possible de remplacer mais je ne peux pas écrire dans le même fichier que celui que je passe en paramétre

    si le fichier d'orgine contient ceci
    mot1

    et que j'applique la comande suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sed -e "s/mot1/mot2/g" fichier

    j'aurais en "sortie"

    mot2

    mais si je fais un cat sur le fichier j'aurais toujours "mot1"

    y aurait-il une astuce afin de remplacer réellement le mot1 par mot2 dans le fichier lui même ou n'est ce pas possible ?

    Merci
    C'est pour ça qu'il existe l'option -i pour les sed 'GNU'...
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sed -ie "s/mot1/mot2/g" fichier
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  8. #8
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Citation Envoyé par Pouic
    C'est pour ça qu'il existe l'option -i pour les sed 'GNU'...
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sed -ie "s/mot1/mot2/g" fichier
    raaahhh je l'oublie tout le temps cette option

    Citation Envoyé par man sed
    -i[SUFFIX], --in-place[=SUFFIX]

    edit files in place (makes backup if extension supplied)
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  9. #9
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    merci pour toutes vos réponses
    c@simir

Discussions similaires

  1. remplacer un mot par un autre dans un stringbuffer ?
    Par rimas2009 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 09/09/2009, 14h41
  2. Réponses: 5
    Dernier message: 09/11/2007, 09h59
  3. Réponses: 3
    Dernier message: 11/09/2007, 17h58
  4. comment remplacer un caractere par un autre dans un fichier txt
    Par uzumaki_naruto dans le forum Langage
    Réponses: 6
    Dernier message: 24/07/2006, 13h33
  5. Réponses: 9
    Dernier message: 22/05/2006, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo